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に接続しランキングを表示する。

コメント