【Unity実践】#17 クリア画面の作成②【ランゲーム】
今回の内容
前回の続きで、ゲームクリア時の画面を作成していきます。
以下の3点を対応していきます。
・クリア時に UI を表示する
・ステージのコインの総数と獲得数を表示する
・Nextボタンをクリックしたときの処理
※初めての方はこちらから
⇒ 【第1回記事】導入とサンプルの紹介
クリア時に UI を表示する
まず、どのスクリプトに処理を書くかですが、今回は GameManagerScript に書いていきます。
これは、コインの枚数を GameManagerScript で管理しているので、そこにまとめた方が見通しが良さそうという判断です。
では実装ですが、GameManagerScript を以下の通り編集します。
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class GameManagerScript : MonoBehaviour { public enum GAME_STATUS { Play, Clear, Pause, GameOver }; public static GAME_STATUS status; public static int tempCoinNum; [SerializeField] Text coinNumText; [SerializeField] GameObject clearUI; void Start() { // ステータスをPlayに status = GAME_STATUS.Play; } void Update() { if (status == GAME_STATUS.Clear) { clearUI.SetActive(true); } coinNumText.text = tempCoinNum.ToString(); } }
clearUI が、クリア時のUI(ClearUI)を参照するための変数です。
status が Clear となったときに、表示するように実装しています。
なお、status が Clear になる処理、タイミングを忘れてしまった方は、
GoalScript と PlayerScript を確認してください。
スクリプトを保存したら Unityエディタに戻って、
GameManagerScript の clearUI に Canvas > ClearUI を設定します。
ゲームをプレイして、クリア時に UI が表示されるようになっていれば成功です。
ステージのコインの総数と獲得数を表示する
ステージに配置されているコインの総数を取得するための準備をします。
新規タグ「Coin」を追加して、Coinプレハブに設定します。
次に GameManagerScript を編集します。
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class GameManagerScript : MonoBehaviour { public enum GAME_STATUS { Play, Clear, Pause, GameOver }; public static GAME_STATUS status; public static int tempCoinNum; [SerializeField] Text coinNumText, resultCoinText; [SerializeField] GameObject clearUI; int stageCoinNum; void Start() { // ステージ内のコインの枚数を取得 stageCoinNum = GameObject.FindGameObjectsWithTag("Coin").Length; // ステータスをPlayに status = GAME_STATUS.Play; } void Update() { if (status == GAME_STATUS.Clear) { resultCoinText.text = tempCoinNum.ToString().PadLeft(3) + "/" + stageCoinNum; clearUI.SetActive(true); } coinNumText.text = tempCoinNum.ToString(); } }
14行目は、元々あった行に「resultCoinText」だけ追加しています。
これは、コインの総数を表示する Text を参照するための変数です。
24行目では先ほど追加した Coinタグを使って、ステージ内のコインの総数を取得しています。
34行目でUIのテキストに、獲得したコイン(tempCoinNum)と、総コイン数(stageCoinNum)を表示しています。
なお、PadLeft を使って空白埋めしているのは、表示位置の調整が目的です。
これでスクリプトは完成なので、保存したら Unityエディタに戻ります。
GameManagerScript の resultCoinText に、Canvas > ClearUI > ResultCoinText を設定します。
クリア時の UI にコインの総数と獲得数が表示されれば成功です。
Nextボタンクリック時の処理
最後に、Nextボタンクリック時の処理を作成します。
なお、本来は次のステージを読み込む仕組みとしますが、
今回は簡単のために、「Stage1」を再読み込みする実装とします。
本格的な実装は後の記事で行います。
GameManagerScript に 以下の通り「LoadNextScene」メソッドを追加します。
using句を忘れずに追加してください。
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using UnityEngine.SceneManagement; public class GameManagerScript : MonoBehaviour { ~ 省略 ~ public void LoadNextScene() { SceneManager.LoadScene("Stage1"); } }
(関連記事)
シーンの切り替え
スクリプトを保存したら Unityエディタに戻って、NextButton の OnClick に、
作成した LoadNextSceneメソッドを設定します。
Nextボタンクリック時に Stage1 が再読み込みされていれば成功です。
おわりに
一旦ここまでで、クリア画面の表示と機能がおよそ完成となります。
次回は今回の内容にやや関連する機能である、コイン枚数の保存機能を作成していきます。
関連リンク ➡ 「初心者のための」Unityゲーム制作 目次
© Unity Technologies Japan/UCL