Unity17(RandomNumberゲームの作成:前編)

Unity

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にアタッチする。

01using System.Collections;
02using System.Collections.Generic;
03using UnityEngine;
04using UnityEngine.UI;
05 
06public class CubeController : MonoBehaviour {
07  public Text score;
08  public GameObject startButton;
09  private Coroutine game;
10  private bool  isPlay;
11 
12  void Update () {
13 
14    if(isPlay && Input.GetMouseButtonDown(0)){
15      RaycastHit hit;
16      Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
17      if(Physics.Raycast(ray,out hit,100.0f)){
18        if(hit.collider.name=="Cube"){
19          StopCoroutine (game);
20          isPlay = false;
21 
22        }
23      }
24    }
25  }
26  IEnumerator RandomNum(){
27    while (true) {
28      transform.Rotate (0, 10.0f, 0);
29      yield return new WaitForSeconds (0.3f);
30      score.text = Random.Range (0, 100000).ToString();
31    }
32  }
33  public void StartClick(){
34 
35    game=StartCoroutine (RandomNum ());
36    startButton.SetActive (false);
37    isPlay = true;
38 
39  }
40 
41}

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

コメント

タイトルとURLをコピーしました