8. スコアを表示しよう

コインを取得したら、右上に取得した数に応じたスコアが表示されるようにしてみましょう。

uGUIのテキストを右上にレイアウトしよう

これまでに作成した作業を復習を兼ねてやってみましょう。

  1. テキストを作成
  2. RectTransformを編集して右上に配置
  3. スコアを表示する文字のフォントを設定
  • TextMeshPro の利用を推奨します。初回はTMPの導入ダイアログが表示されるので、指示に従って必要なリソースをインポートしてください。

コインを取得したらスコアをアップさせるプログラムを書こう

まず、スコアのスクリプトにメッセージを送信するためにCoinクラスからスコアのゲームオブジェクトを見つける必要があります。 ここまではGetComponentなどを使用してきましたが、ここではGameObject.Find("ゲームオブジェクトの名前")という方法で探しています。 名前からゲームオブジェクトを探す必要があるので、Unityエディタ上の名前とスクリプトで記述している名前が同じでないといけない点に注意しましょう。 ここではScoreTextという名前でTextMeshProのテキストオブジェクトを作成します。

あとは、コイン側に、取得した時にスコアにメッセージを送信するスクリプトを記述します。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Coin : MonoBehaviour
{
  ~
  void OnTriggerEnter(Collider other) {
    ~
    // スコアのゲームオブジェクトを取得する
    GameObject scoreTextGo = GameObject.Find("ScoreText");

    // メッセージを送信する
    scoreTextGo.SendMessage("OnScore", 1);
  }
}

最後に、スコア側でメッセージを受け取った際に実行されるメソッドを記述します。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro; // TextMeshProを使用

public class Score : MonoBehaviour
{
  // スコアをメモする変数を宣言する
  int score = 0;

  // メッセージを受け取る
  void OnScore (int num)
  {
    // scoreに受け取った値を追加する
    score += num;

    // TextMeshProUGUI コンポーネントを取得する
    TextMeshProUGUI scoreText = gameObject.GetComponent<TextMeshProUGUI>();

    // scoreをテキストとして表示する
    scoreText.text = score.ToString();
  }
}