もぐら叩きゲームを作成。Part4.UI作成(時間とスコアを表示する)|Unityゲーム制作

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です。

修正する箇所はいくつかありますが、基本的なもぐら叩きゲーム完成です。

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