-
Notifications
You must be signed in to change notification settings - Fork 17
5.ゲームのuiを追加する
ゲームのUIを追加します。 UIといっても簡単なもので「残りのItem数を表示する」だけの機能です。この機能も分解してみると、以下の様な機能になります。
- 残りのItem数を数える
- Item数をUIで表示する
まずはUIを用意します。今回は余り凝ったことはせず、単純に画面左下に残りのアイテム数を表示するUIを作成します。
まずはUIを表示するCanvasを用意します。
- HierarchyビューのCreateボタンをクリックします。
- UI > Canvasを選択します。
Canvasが生成されますので、想定サイズを設定します。
- HierarchyビューでCanvasオブジェクトを選択します。
- CanvasScalerの「UI Scale Mode」を「Scale With Screen Size」に設定します。
次にテキストを表示します。
- HierarchyビューのCreateボタンをクリックします。
- UI -> Text をクリックします。
- 作成したCanvas>TextオブジェクトをInspectorビューでScoreLabelと改名します。
これで文字が表示されるようになりました。
これを中央へ移動し、フォントの大きさを調整します。
- HierarchyでCanvas>ScoreLabelオブジェクトを選択します。
- RectTransformコンポーネントの値を以下のように設定します。 (PosX : -230, PosY : -230, Width : 300, Height : 100)
- HierarchyでCanvas>ScoreLabelオブジェクトを選択します。
- TextコンポーネントのFont Sizeを60に設定します。
- TextコンポーネントのTextを「0」に設定します。
次に、残りのItem数を先ほど作成したScoreLabelに通知する仕組みを用意します。
この機能を実装する方法は無数にありますが、今回は一番簡単なGameControllerに管理させる方法を採用します。またItem数のようなゲーム全体の進行に関する機能はGameControllerが持つのが望ましいです。 このGameControllerがItemの残数を数え、変更があれば通知する仕組みを持ちます。
ではGameControllerを作成していきましょう。
- HierarchyビューのCreateボタンをクリックします。
- 「Create Empty」を選択します。
- 作成したオブジェクト名を「GameController」へ変更します。
- Tagを「GameController」へ変更します。
今回はItemオブジェクトに「Item」タグを設定し、該当のタグを持つオブジェクトの個数を計測する方法を使用します。
- メニューバー > Edit > ProjectSetting > Tags And Layers を選択します。
- Inspectorビューを確認し、Tagsメニューを開きます。
- +ボタンを押し、タグを表示します。
- 「New Tag」を「Item」に変更します。
次にItemタグを設定します。 先ほどItemタグを登録したことで一覧にItemタグが追加されましたので、Itemオブジェクトにタグを設定します。
- HierarchyビューでItemオブジェクトを選択します。
- InspectorビューでTagをItemに変更します。
- Applyボタンを押しPrefabを更新します。
GameControllerにItemをカウントする機能を追加します。
まずはGameControllerコンポーネントを作成します。
- HierarchyビューでGameControllerを選択します。
- InspectorビューでAdd Componentをクリックします。
- NewScript を選択し、GameControllerを生成します。
GameControllerに以下のようにコードを記述します。
using UnityEngine;
using System.Collections;
public class GameController : MonoBehaviour
{
public void Update ()
{
int count = GameObject.FindGameObjectsWithTag ("Item").Length;
}
}
残りのアイテム数を先ほど作成したUIに表示するように変更します。
まずはGameControllerからTextコンポーネントへアクセスする方法を考えます。 今回もエディタでTextコンポーネントへの参照を設定する方法を利用します。
まずは参照に使用するコードを作成します。
using UnityEngine;
using System.Collections;
public class GameController : MonoBehaviour
{
public UnityEngine.UI.Text scoreLabel;
public void Update ()
{
int count = GameObject.FindGameObjectsWithTag ("Item").Length;
}
}
次に取得したItem数をtextに代入します。
using UnityEngine;
using System.Collections;
public class GameController : MonoBehaviour
{
public UnityEngine.UI.Text scoreLabel;
public void Update ()
{
int count = GameObject.FindGameObjectsWithTag ("Item").Length;
scoreLabel.text = count.ToString ();
}
}
最後にUnityエディタへ戻り、GameControllerとScoreLabelを紐付けます。
- HierarchyビューでGameControllerオブジェクトを選択します。
- Canvas>ScoreLabelオブジェクトをScoreLabelへドラッグ&ドロップします。
ゲームを再生してみてください。 ゲーム再生時に残りのアイテム数が左下に表示され、アイテムを取得する度に残り個数が減ることが分かります。