Unityで「簡単なモグラ叩きゲーム」を作成する、Part4です。今回で仮の完成形となります。
はじめに
Part1は下記です。
今回やること
Part1からPart3でモグラ叩きの動きを作成しました。Part4では簡単なUI画面を作成していきます。
作成開始
Hierarchyで「UI」→「Legacy」→「Button」を追加します。
名前をStartButtonに変更して、位置を変更します。
次に「UI」→「Legacy」→「Text」を追加します。
名前をScoreに変更して位置とテキストの内容、フォントサイズを変更します。
コピーして、位置をずらし、テキストの内容も変更します。
ScoreとScoreTextをコピーして、名前をTimerとTimerTextにします。
位置を変更して、ゲーム画面が下記のような感じになればOKです。
UI調整
Canvas配下に「Create Empty」で空オブジェクトを追加します。名前を「GameUI」とします。
GameUI配下に作成したテキストオブジェクトを移動します。
スクリプトの変更
GameManagerスクリプトを変更します。下記が最終のスクリプトです。
using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class GameManager : MonoBehaviour { public static GameManager instance { get; private set; } [SerializeField] private List<mogura> moguras; [SerializeField] private GameObject playbutton; [SerializeField] private GameObject gameUI; [SerializeField] private Text scoreTxt; [SerializeField] private Text timeTxt; [SerializeField] private float gameTime = 30f; private List<mogura> ActiveMoguras = new List<mogura>(); private int score = 0; private bool isPlay = false; private void Awake() { instance = this; } public void GameStart() { for (int i = 0; i < moguras.Count; i++) { moguras[i].SetIndex(i); } playbutton.SetActive(false); gameUI.SetActive(true); score = 0; scoreTxt.text = score.ToString(); isPlay = true; } private void Update() { if (!isPlay) return; gameTime -= Time.deltaTime; if (gameTime <= 0) { gameTime = 0; GameOver(); } timeTxt.text = gameTime.ToString("F1"); if (ActiveMoguras.Count <= (score / 5)) { int index = Random.Range(0, moguras.Count); if (!ActiveMoguras.Contains(moguras[index])) { ActiveMoguras.Add(moguras[index]); moguras[index].Activate(); } } } public void AddScore(int index) { score += 1; scoreTxt.text = score.ToString(); ActiveMoguras.Remove(moguras[index]); } public void Nohit(int index) { ActiveMoguras.Remove(moguras[index]); } private void GameOver() { isPlay = false; playbutton.SetActive(true); } }
各パラメーターをセットします。
StartButtonのOnClickに「GameStart」を割り当てます。
下記のように動けばOKです。
修正する箇所はいくつかありますが、基本的なもぐら叩きゲーム完成です。