2Dゲーム制作

【初心者向け】Unityでスコア機能を実装しよう|敵を倒すとポイント加算!

はじめに

これまでの記事で、プレイヤーが敵を踏んで倒す処理を実装しました。
今回はその発展として「スコア機能」を追加してみましょう。
敵を倒すたびにポイントが加算され、UIに現在のスコアが表示されるようになります。


1. スコア管理用スクリプトを作成

ScoreManager.cs というスクリプトを作成し、以下のように記述します:

using UnityEngine;

public class ScoreManager : MonoBehaviour
{
    public static ScoreManager instance;
    public int score = 0;
    public TMPro.TMP_Text scoreText;

    void Awake()
    {
        if (instance == null)
        {
            instance = this;
        }
    }

    public void AddScore(int value)
    {
        score += value;
        scoreText.text = "Score: " + score.ToString();
    }
}
  • TMPro.TMP_Text を使うことで、名前空間を省略せず簡潔に記述できます
  • TextMeshProは新しいUI方式で、見た目がきれいなため推奨です

2. UIにスコアを表示する

  • Textオブジェクトを追加(ヒエラルキー → UI → テキスト)し、名前を「ScoreText」に変更
  • 初回使用時はTextMeshProのインポートを求められるので指示に従ってインストール
    ※デフォルトのフォントには日本語がないため注意
  • ScoreManager を空のオブジェクトにアタッチし、ScoreText をインスペクターにドラッグ

3. 敵撃破時にスコア加算する

PlayerAttack.csOnTriggerEnter2D のif (collision.gameObject.CompareTag(“Enemy”))内にスコア加算処理を追加:

ScoreManager.instance.AddScore(100); // 敵1体につき100点
  • Destroy() より前に記述すると、破棄前にスコアが加算されます

4. 実行して確認しよう

  • 敵を倒すたびにスコアが加算され、UIに表示されるか
  • 複数の敵でもスコアが正しく加算されるか

5. まとめ

スコア機能の追加で、ゲームに達成感が生まれました。
次回は、スコア保存、ハイスコア機能やゲームオーバー画面への遷移など、ゲームの完成に向けた仕上げに挑戦していきましょう!