【Unity ゲーム制作】神経衰弱ゲームを作ろう!〜その9 ( タイマーを作成しよう!)
スポンサーリンク
前回はカード配置のアニメーションを作成しました。
ゲームとしての見栄えも良くなったので、次はゲーム内部のレベルアップを行なっていきましょう!
まずは、神経衰弱をやる上で重要な「タイマー」機能を実装します!
1 . CanvasにTimerAreaを作成する
まずはHierarchy のCanvasにTimer用のAreaを作成しましょう。
2 . TimerAreaにTextを作成する
次は先ほど作ったTimerAreaにTextオブジェクトを作成しましょう。
「UI → Text」で作成します
コンポーネントはこのような状態です
次はタイマー用のスクリプトを作成します。
3. 「TimerManager」を作成しよう!
TimerManager.csを作成し、以下のコードを記述してください。
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class TimerManager : MonoBehaviour { // 時間表示 public Text TimerText; /// <summary> /// タイマーのテキストの設定 /// </summary> public void SetText (int time) { this.TimerText.text = "Time : " + time; } }
こちらは先ほど実装したTextをアタッチして使用します。
では、実際にゲーム中にタイマーが起動するようにGameSceneManager にタイマー機能を追加しましょう!。
4 . 「GameSceneManager.cs」にタイマー機能を実装する
using System; using System.Collections; using System.Collections.Generic; using UnityEngine; public class GameSceneManager : MonoBehaviour { // 一致したカードIDリスト private List<int> mContainCardIdList = new List<int> (); // カード生成マネージャクラス public CardCreateManager CardCreate; // 時間管理クラス public TimerManager timerManager; // 経過時間 private float mElapsedTime; void Start () { // 一致したカードIDリストを初期化 this.mContainCardIdList.Clear (); // カードリストを生成する this.CardCreate.CreateCard (); // 時間を初期化 this.mElapsedTime = 0f; } void Update () { this.mElapsedTime += Time.deltaTime; this.timerManager.SetText ((int) this.mElapsedTime); // 選択したカードが2枚以上になったら if (GameStateController.Instance.SelectedCardIdList.Count >= 2) { // 最初に選択したCardIDを取得する int selectedId = GameStateController.Instance.SelectedCardIdList[0]; // 2枚目にあったカードと一緒だったら if (selectedId == GameStateController.Instance.SelectedCardIdList[1]) { Debug.Log ($"Contains! {selectedId}"); // 一致したカードIDを保存する this.mContainCardIdList.Add (selectedId); } // カードの表示切り替えを行う this.CardCreate.HideCardList (this.mContainCardIdList); // 選択したカードリストを初期化する GameStateController.Instance.SelectedCardIdList.Clear (); } } }
まずはGameSceneManager のプロパティ に TimerManagerを追加します。
その後 Update() でTime.deltatime を使用して時間を加算していきます。
int 側にキャストしているのは、「1分」ごとの表記を表しているためです。
ここまで出来たら、実際にGameを起動してみましょう。
タイマーを作成することが出来ました!