RandamNumberゲームの作成


簡単なゲーム作成を通して、uGUI,Http通信、Jsonパースを学習する。今回は前編。UIの作成だ。

プロジェクトの作成

1.新規プロジェクトを3Dで作成し名前をRandomNumberとする

キューブの作成

2.Cubeを原点に作成する。カメラを調整して画面の中央にキューブが表示されるようにする(だいたいでよい)

Canvasの設置

3.Canvasを設置する。CavnvasScalerはUIの大きさを固定したいので初期設定のままにしておく。

4.Canvasの子要素としてUI->Buttonを作成し、StartButtonとリネーム後、transformの値を以下のように変更する。

5.StartButtonの子要素のTextを以下のように変更する。

6.Canvasの子要素としてTextを配置し、ScoreValueとリネームする。

7.ScoreValueのtransformは以下。

8.フォントの色を赤に設定する。ここまでで以下のようになっていればOK

8.画面の解像度によってはパーツがとても大きくなる。その場合はCanvasのScaleFactorで調整する。

CubeControllerの作成

9.新規スクリプトから以下のようにCubeController.csを作成し、Cubeにアタッチする。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class CubeController : MonoBehaviour {
	public Text score;
	public GameObject startButton;
	private Coroutine game;
	private bool  isPlay;

	void Update () {

		if(isPlay && Input.GetMouseButtonDown(0)){
			RaycastHit hit;
			Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
			if(Physics.Raycast(ray,out hit,100.0f)){
				if(hit.collider.name=="Cube"){
					StopCoroutine (game);
					isPlay = false;

				}
			}
		}
	}
	IEnumerator RandomNum(){
		while (true) {
			transform.Rotate (0, 10.0f, 0);
			yield return new WaitForSeconds (0.3f);
			score.text = Random.Range (0, 100000).ToString();
		}
	}
	public void StartClick(){

		game=StartCoroutine (RandomNum ());
		startButton.SetActive (false);
		isPlay = true;

	}

}

10.Cubeのインスペクターからpublicフィールドを登録する。

11.ヒラルキーからStartButtonを選択し、OnClickを以下のように登録する。

11.実行してみよう。スタートボタンを押すとキューブが回転し乱数を生成し続ける。キューブをクリックすると回転がとまり乱数の生成も止まる。乱数を見極めて大きな数字でストップさせるというシンプルなゲームだ。

フォームパネルの作成

生成した乱数をデータベースに送るためのフォームを作成する。
11.Canvasの子要素にUI->Panelを生成しFormPanelとリネーム。transformを以下のように設定する。

12.FormPanelの子要素としてUI->InputFieldを作成しNameFieldにリネームする。transformは以下

13.NameFieldの子要素のPlaceholderを以下のように編集する。

14.NameFieldの子要素のTextをNameValueとリネームする。

14.NameValueを調整する。

ラジオボタンの作成

15.FormPanelの子要素としてUI->Toggleを作成し、Manとリネームする。transformは以下

16.ManにAddComponent->UI->ToggleGroupを付与し、インスペクターからIsOnにチェックを入れ、GroupにヒエラルキーにあるMan(自分自身)をD&Dで登録する。

17.Manの子要素Backgroundのtransformを以下のように調整する。

18.Backgroundの子要素Checkmarkを以下のように調整する。

19.Manの子要素Labelを以下のように調整する。

20.Manを複製してWomanを作成する。

21.Womanのtransformを以下のように設定する。(この段階では少し変でも良い)

22.WomanのインスペクターにてIsOnのチェックを外し、GroupをManにしてToggleGroupコンポーネントをリムーブする。

23.Womanの子要素のLabelを以下のように調整する。

24.FormPanelの子要素としてUI->Buttonを作成する。SubmitButtonとリネームし、以下のように調整する。

25.SubmitButtonの子要素のTextを以下のように調整する。

26.ここまでで下のような感じになってればOKだ。(チェックが両方入っている場合は一回実行する)

RankingPanelの作成

続けてランキングが表示されるランキングパネルを作成する。
27.Canvasの子要素としてUI->Panelを作成し、RankingPanelとリネーム。以下のように調整する。

28.RankingPanelの子要素としてUI->Panelを作成し、Cellsとリネーム。以下のように調整する。

29.CellsにAddComponentからLayout->ContentSizeFitterとLayout->VerticalLayoutGroupを付与し、以下のように調整する。

30.Cellsの親要素であるRankingPanelにAddComponentからUI->ScrollRectを付与し、以下のように調整する。

Cellの作成

31.以下の2枚の画像をダウンロードし、AssetsにD&Dでコピーする。


32.画像を選択し、インスペクターから以下のように調整する。以下のように調整し、最後にApplyを押す。(2枚とも)

33.Cellsの子要素としてUI->Panelを作成しCellとリネーム。以下のように調整する。

34.Cellの子要素としてUI->Textを作成しRankとリネーム。以下のように調整する。

35.Cellの子要素としてUI->Imageを作成Thumbとリネームして以下のように調整 。

36.Cellの子要素としてUI->Textを作成しNameとリネーム。以下のように調整する。

37.Cellの子要素としてUI->Textを作成しScoreとリネーム。以下のように調整する。

38.下図のようになっていることを確認したのちCellをAssetsにD&Dしてプレファブにし、ヒエラルキーからは削除する。

重なり順の調整

39.ScoreValueはFormPanelより全面で表示される方がベターだ。ヒエラルキーで並び順をFormPanelの下にする。

確認

以上でUIの作成は終了だ。下図のようになっているだろうか。

次回は通信をしてDBに接続しランキングを表示する。