みなさんこんにちは!Unityの入門書で通称”ヒヨコ本”として親しまれている”Unity5入門 最新開発環境による簡単3D&2Dゲーム制作
前回の改造でボールを連続して発生できないようにしました。さらにボールを発生できる数を設定してみたいと思います。
using System.Collections; using System.Collections.Generic; using UnityEngine; // UI関連クラスを使用できるようにする using UnityEngine.UI; public class BallCounter : MonoBehaviour { // UIオブジェクト"Text BallCounter"を格納する変数 public GameObject textBallCounter; // テキストコンポーネントを格納する変数 private Text text; // ゲームの初期処理 void Start() { // UIオブジェクト"Text BallCounter"のテキストコンポーネントを // 取得して変数"text"に格納 text = textBallCounter.GetComponent<Text>(); } // ゲーム実行中の繰り返し処理 void Update() { // "GameManager"の変数"ballCount"の値を文字列として // 変数"text"に代入 text.text = "BALL: " + Manager.ballCount.ToString(); } }
ゲームを再生するとボール残数テキストが”777″と表示されます。
ゲームタイトルが表示されているときはボール残数テキストが表示されないように、作成したUIオブジェクト”Text BallCounter”は、下記の通りUIオブジェクト”Panel Title”よりも上に移動しておきます。
ボール残数の表示ができたので、次はマウスクリックでボールを発生させたら残数表示が減るようにしましょう。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Spawner : MonoBehaviour { // シーンに発生させるオブジェクトを格納する変数"prefab"を宣言 public GameObject prefab; // ゲーム実行中の繰り返し処理 void Update() { // マウス左クリック(ボタン"Fire1")したとき if (Input.GetButtonDown("Fire1") // シーンにボールが存在しなければ // (スクリプト"Manager"の変数"ballExist"の値を参照) && !Manager.ballExist ) { // 変数"prefab"に格納されたプレハブをシーンに発生させる Instantiate(prefab, transform.position, transform.rotation); // シーンにボールが存在するかチェックする変数を"false"にする // (スクリプト"Manager"の変数"ballExist"の値を変更) Manager.ballExist = true; // ボールの残数を管理する変数の値を減らす // (スクリプト"Manager"の変数"ballCount"の値を変更) Manager.ballCount--; } } }
ゲームスタート時のボール残数を設定しましょう。
[Hierarchy]ウィンドウ > オブジェクト”Manager”を選択。[Inspector]ウィンドウ > Manager (Script) のinitialBallCount フィールドに先ほど動作確認入力した値”777″が入っていればそのままで大丈夫です。
ここまでの内容をWebGLでビルドしてみました。ゲームを再生してマウスクリックでボールを発生させる度にボール残数表示が減るようになりました。