『【初心者向け】Unityで連打ゲームを作る全手順まとめ』6.スクリプトの記述②

6.スクリプトの記述②

スクリプトの記述②

次に「GameFlow」のScriptに以下のコードをコピーして、今のコードの上から上書きしてください。

using UnityEngine;
using TMPro; // 追加: TextMeshProを使うために必要

public class GameFlow : MonoBehaviour
{
    public GameObject startPanel;
    public GameObject gamePanel;
    public GameObject resultPanel;

    public TextMeshProUGUI scoreText; // スコア表示用の枠
    private int score = 0;            // スコアを保存する変数

  void Start()
  {
    // ゲーム起動時はスタート画面から
    ShowStart();
  }

    public void ShowStart()
    {
        startPanel.SetActive(true);
        gamePanel.SetActive(false);
        resultPanel.SetActive(false);
        score = 0; // スコアをリセット
    }

    public void ShowGame()
    {
        startPanel.SetActive(false);
        gamePanel.SetActive(true);
        resultPanel.SetActive(false);
        score = 0;
        UpdateScoreText();
    }

    // ボタンを押した時に呼ぶ関数
    public void AddScore()
    {
        score++;
        UpdateScoreText();
    }

    void UpdateScoreText()
    {
        scoreText.text = "Score: " + score;
    }

    public void ShowResult()
    {
        startPanel.SetActive(false);
        gamePanel.SetActive(false);
        resultPanel.SetActive(true);
    }
}

すると「GameManager」のInspectorに新たに「Score Text」という枠ができました。

ここに「Score Text」をドラッグ&ドロップして入れます。

「ClickButton」にAddScore()を登録

Hierarchyの ClickButtonに、連打機能を紐付けます。

Hierarchy で 「ClickButton」 を選択します。

Inspector の一番下 「On Click ()」 に「+」を押して枠を追加します。

Hierarchy から 「GameManager」 をその枠へドラッグ&ドロップします。

右側のドロップダウンで 「GameFlow」→「AddScore()」 を選択します。

これは以前やった「StartButton」の設定と同じ工程です。

▶して確認してみましょう。

「ScoreText」を選択して、「Inspector」の「TextInput」を見てください。うまくいっていればScoreがどんどん増えていきます。

ざっくりコード解説2

public void ShowGame()
    {
        startPanel.SetActive(false);
        gamePanel.SetActive(true);
        resultPanel.SetActive(false);
        
        score = 0;           // スコアをリセット
        UpdateScoreText();   // スコア表示を初期化
    }

・ShowGame():
スタート画面からゲーム画面へ切り替えるための関数です。
役割:
スタート画面を隠し、ゲーム画面を表示します。また、score = 0; でスコアをリセットし、UpdateScoreText() を呼ぶことで、画面上のスコア表示を「0」に初期化しています。

public void AddScore()
    {
        score++;             // スコアに1を足す
        UpdateScoreText();   // 増えたスコアを画面に反映
    }

・AddScore():
「ボタンを押したとき」に呼び出される関数です。
役割:
score++ でスコアの数値を1増やします。その後、UpdateScoreText() を呼んで、画面上のテキストを最新のスコアに書き換えています。

ポイント:
ボタン(Buttonオブジェクト)の OnClick() イベントにこの関数を登録することで、プレイヤーがボタンをクリックするたびにスコアが増える仕組みになります。

void UpdateScoreText()
    {
        scoreText.text = "Score: " + score; // 数値を文字に変換して表示
    }

・UpdateScoreText():
スコアの数値をテキスト画面に反映させるための「更新用」関数です。

役割:
scoreText.text = “Score: ” + score; という命令で、プログラム内の数値(score)を、画面上のテキスト(scoreText)に文字として送っています。

ポイント:
スコアが増えるたびにこの処理が必要になるため、関数として独立させることで、他の場所から何度でも呼び出せるようにしています。

public void ShowResult()
    {
        startPanel.SetActive(false);
        gamePanel.SetActive(false);
        resultPanel.SetActive(true);
    }

・ShowResult():
ゲーム終了時に、リザルト(結果)画面へ切り替えるための関数です

役割: 他のパネルを隠して resultPanel だけを表示します

コメント

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