こんにちは!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でビルドしてみました。スタートボタンクリックでタイトル画面が非表示になり、もう一度マウスクリックするとボールが発生できるようになりました。