【unity】敵を倒したときにスコア表示を追加する方法【コード、スクリプト】

前回の記事
www.momino1234.com


敵を倒したときに スコアを追加する方法

① スコア管理スクリプトを作る

新しいスクリプトを作成

名前はGameManagerに

コードは


  1. using UnityEngine;
  2. using TMPro;
  3. public class GameManager : MonoBehaviour
  4. {
  5.     public static int score = 0;
  6.     public TextMeshProUGUI scoreText;
  7.     void Update()
  8.     {
  9.         scoreText.text = "Score: " + score;
  10.     }
  11. }

② Canvas にスコア表示を作る

Hierarchy欄で

Canvasを右クリック

UI(Canvas)

Text(TextMeshPro)

名前を

ScoreText

にします。

位置をposx、yで調整。
左上がおすすめです。



③ Enemyを倒した時にスコア追加

Bulletスクリプトをこう変更します。


void OnTriggerEnter2D(Collider2D other)
{ の下に


  1.        if (other.CompareTag("Enemy"))
  2.         {
  3.             GameManager.score += 10; // スコア追加
  4.             Destroy(other.gameObject);
  5.             Destroy(gameObject);
  6.         }

を追加


こんな感じに

  1. using UnityEngine;
  2. public class BulletMove : MonoBehaviour
  3. {
  4.     public float speed = 8f;
  5.     void Update()
  6.     {
  7.         transform.position += Vector3.up * speed * Time.deltaTime;
  8.         if (transform.position.y > 6f)
  9.         {
  10.             Destroy(gameObject);
  11.         }
  12.     }
  13.     void OnTriggerEnter2D(Collider2D other)
  14.     {
  15.         if (other.CompareTag("Enemy"))
  16.         {
  17.             Destroy(other.gameObject); // 敵を消す
  18.             Destroy(gameObject); // 弾も消す
  19.         }
  20.         if (other.CompareTag("Enemy"))
  21.         {
  22.             GameManager.score += 10; // スコア追加
  23.             Destroy(other.gameObject);
  24.             Destroy(gameObject);
  25.         }
  26.     }
  27. }

④ GameManager を配置

Hierarchyで

Create Empty

名前

GameManager

そこに

GameManagerスクリプト

を入れる。

Inspectorの

Score Text

Hierarchyの欄のScoreText

をドラッグ。

これで完成

ゲーム中

敵を倒す

Score +10

画面に表示

よくあるミス

✔ ScoreText を GameManager に入れてない
✔ Canvas に Text が無い
✔ Enemy の Tag が Enemy じゃない


次の記事
www.momino1234.com