はじめに
これまでの記事で、プレイヤーが敵を踏んで倒す処理を実装しました。
今回はその発展として「スコア機能」を追加してみましょう。
敵を倒すたびにポイントが加算され、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.cs
の OnTriggerEnter2D
のif (collision.gameObject.CompareTag(“Enemy”))内にスコア加算処理を追加:
ScoreManager.instance.AddScore(100); // 敵1体につき100点
Destroy()
より前に記述すると、破棄前にスコアが加算されます
4. 実行して確認しよう
- 敵を倒すたびにスコアが加算され、UIに表示されるか
- 複数の敵でもスコアが正しく加算されるか
5. まとめ
スコア機能の追加で、ゲームに達成感が生まれました。
次回は、スコア保存、ハイスコア機能やゲームオーバー画面への遷移など、ゲームの完成に向けた仕上げに挑戦していきましょう!