みなさんこんにちは!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でビルドしてみました。ゲームを再生してマウスクリックでボールを発生させる度にボール残数表示が減るようになりました。