はじめに
これまでの記事で、プレイヤーが敵を踏んで倒す処理を実装しました。
今回はその発展として「スコア機能」を追加してみましょう。
敵を倒すたびにポイントが加算され、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. まとめ
スコア機能の追加で、ゲームに達成感が生まれました。
次回は、スコア保存、ハイスコア機能やゲームオーバー画面への遷移など、ゲームの完成に向けた仕上げに挑戦していきましょう!