こんにちは!Unityの入門書で通称”ヒヨコ本”として親しまれている”Unity5入門 最新開発環境による簡単3D&2Dゲーム制作 “の作例に色々とゲーム要素を追加してオリジナルゲームに仕上げる内容を連載をしています。
Chapter2:インターフェイスと使い方
Chapter3:Unityを使ってみよう!
Chapter4:キャラクターを動かしてみよう!
Chapter5:ゲームのUIを作ってみよう!
Chapter6:ゲームを作ろう!(1)
Chapter7:ゲームを作ろう!(2)
Chapter8:2D機能を使ってみよう!
リトライボタンをクリックしたらゲームオーバー画面を非表示する
前回は”リトライボタンをクリックしたらゲームをリセットする“というのを行いました。今回はタイトル画面でスタートボタンをクリックすると同時にボールが発生しているのを修正し、タイトル画面が非表示になってからもう一度クリックしたらボールが発生するように改造します。
スクリプト”Spawner”を編集する
ボールを発生させる条件にタイトル画面表示の判定を追加します。
スクリプト”Spawner”をダブルクリックしてエディターを起動。下記のコードのマーカー部分が修正箇所になります。
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 // ゲームオーバー画面が表示されていなければ // (スクリプト"Manager"の変数"gameOver"の値を参照) && !Manager.gameOver // ゲームタイトル画面が表示されていなければ // (スクリプト"Manager"の変数"gameTitle"の値を参照) && !Manager.gameTitle ) { // 変数"prefab"に格納されたプレハブをシーンに発生させる Instantiate(prefab, transform.position, transform.rotation); // シーンにボールが存在するかチェックする変数を"true"にする // (スクリプト"Manager"の変数"ballExist"の値を変更) Manager.ballExist = true; // ボールの残数を管理する変数の値を減らす // (スクリプト"Manager"の変数"ballCount"の値を変更) Manager.ballCount--; } } }
動作確認
スクリプトを保存したら再生して動作確認してみます。タイトル画面でスタートボタンをクリックするとタイトル画面が非表示になり、ボール残数が初期値のままであればOKです。いまはマウスクリックしても変数”gameTitle”の値が”true”なのでボールを発生することができません。
スクリプト”PanelTitle”を編集する
では、タイトル画面を制御するスクリプト”PanelTitle”を編集してボールを発生できるようにしましょう。
スクリプト”PanelTitle”をダブルクリックしてエディターを起動。下記のコードのマーカー部分が修正箇所になります。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class PanelTitle : MonoBehaviour { // タイトル画面UIオブジェクトを格納する変数 public GameObject panelTitle; // ゲームの初期処理 void Start() { // ゲーム時間の進行速度を"0"に設定して一時停止 Time.timeScale = 0; } // ボタンをクリックした時に実行する処理 public void StartScene() { // ゲーム時間の進行速度を"1"に設定して再生する Time.timeScale = 1.0f; // タイトル画面を非表示にする panelTitle.SetActive(false); // タイトル画面が表示されているかチェックする変数の値を変更 // (スクリプト"Manager"の変数"gameTitle"の値を変更) Manager.gameTitle = false; } }
動作確認
ここまでの内容をWebGLでビルドしてみました。スタートボタンクリックでタイトル画面が非表示になり、もう一度マウスクリックするとボールが発生できるようになりました。