ここでは、敵に得点をつけてスコアを表示する方法を学びます。
・「Canvas」を右クリック→「UI」を選択→「Text」を選択してクリック。
・名前は「ScoreLabel」に変更。
・「ScoreLabel」を選択した状態で、「大きさ」「位置」「Text」「Font Size」を調整します。
・今回は「Canvas」の「左下」に配置するように調整しましょう
これでスコアラベルの準備ができました。
次はスコアの「スクリプト」を準備します。
・C#スクリプトを1つ作成して、名前を「ScoreManager」に変更。
この中に下記のコードを記載してください。(★の部分)
using UnityEngine;
using System.Collections;
// ★<追加>
using UnityEngine.UI;
public class ScoreManager : MonoBehaviour {
// ★変数の定義
private int score;
public Text scoreLabel;
// Use this for initialization
void Start () {
// ★初期値の代入
score = 0;
scoreLabel.text = "SCORE:" + score;
}
// ★スコアを増加させるメソッド
public void addScore(int amount){
score += amount;
scoreLabel.text = "SCORE:" + score;
}
}
・コードが書けたらチェック。
・次に「Hierarchy」→「Create Empty」でオブジェクトを1つ作成。
・名前を「SM」に変更。
・この 「SM」オブジェクトに「ScoreManager」スクリプトをドラッグ&ドロップしましょう。
・「ScoreLabel」には「Canvas」の「ScoreLabel」テキストをドラッグ&ドロップ。
次に「EnemyHealth」スクリプトをダブルクリック
・この中に下記コードを追加してください。(<★追加>の部分)
using UnityEngine;
using System.Collections;
public class EnemyHealth : MonoBehaviour {
// <★追加>
private GameObject scoreManager;
public int scoreValue;
public GameObject effectPrefab1;
public GameObject effectPrefab2;
public int enemyHP;
public GameObject[] ItemPrefab;
// <★追加>
void Start(){
scoreManager = GameObject.Find("SM");
}
public void OnTriggerEnter(Collider other){
if(other.CompareTag("Shell")){
enemyHP -= 1;
Destroy(other.gameObject);
if(enemyHP > 0){
GameObject effect1 = Instantiate(effectPrefab1, transform.position, Quaternion.identity) as GameObject;
Destroy(effect1, 1.0f);
} else {
GameObject effect2 = Instantiate(effectPrefab2, transform.position, Quaternion.identity) as GameObject;
Destroy(effect2, 1.0f);
Destroy(gameObject);
GameObject dropItem = ItemPrefab[Random.Range(0,ItemPrefab.Length)];
Vector3 pos = transform.position;
pos.y = 0.5f;
transform.position = pos;
Instantiate(dropItem, transform.position, Quaternion.identity);
// <★追加>
ScoreManager sm = scoreManager.GetComponent<ScoreManager>();
sm.addScore(scoreValue);
}
}
}
}
・コードの追加ができたらチェック。
・「Score Value」には好きな数字を設定してください。ここに入れた数字が「敵を倒した時の得点」になります。
ここまでできたら再生ボタンを押してみましょう。
敵を破壊した時にスコアの表示が増加すれば成功です。
(応用問題)
*建物などの「物体」を破壊した時にも「得点」が入るようにしてみましょう。
(ヒント)「EnemyHealth」スクリプトを参考に「DestroyObject」スクリプトの中身を修正する。




