【学習】ゲームオーバーとリトライ(シーン遷移の完成)
これまでの学習では、
- タイトル画面を作り、スタートで Game に遷移した
- 入門16で、敵に当たると GameOverScene に遷移する処理を学んだ
という形でシーンの流れを作ってきました。
しかし、ゲームオーバー画面でスコアを表示し、リトライできる仕組みをまとめて学んでいません。
ゲームオーバーとリトライ
を完成させます。
今回は GameOver シーン と リトライボタン、スコアの引き継ぎ(任意)を学びます。
今日作るもの
- GameOver シーンを作成する
- 「ゲームオーバー」とスコアを表示する
- リトライボタンで Game シーンを再読み込みする
- スコアを保持する ScoreManager(任意、入門17を参照)
ゲームの流れ
Title → スタートボタン
↓
Game(プレイ)
↓
敵に当たる → GameOver
↓
リトライボタン → Game に戻る手順1:GameOver シーンを作成する
- File → New Scene で新規シーンを作成
- File → Save As で
GameOverとして保存 - File → Build Settings で GameOver を追加
手順2:ゲームオーバー画面の UI を配置する
- Canvas を作成
- UI → Text で「ゲームオーバー」を表示
- UI → Text でスコア表示用(スコア未実装の場合は「0」などで仮表示)
- UI → Button で「リトライ」ボタンを配置
手順3:リトライボタンで Game に戻る
- 空の GameObject を作成し、
GameOverManagerと名付ける - GameOverManager スクリプトを作成
using UnityEngine;
using UnityEngine.SceneManagement;
public class GameOverManager : MonoBehaviour
{
public void OnRetryButtonClicked()
{
SceneManager.LoadScene("Game");
}
}- リトライボタンの On Click に GameOverManager.OnRetryButtonClicked を設定
手順4:PlayerController のシーン名を確認する
入門16の PlayerController で、敵に当たったときに読み込むシーン名を GameOver に合わせます。
SceneManager.LoadScene("GameOver");Build Settings に登録したシーン名と一致させてください。
重要ポイント
- リトライは Game シーンを再読み込みするだけなので、状態は初期化される
- スコアを引き継ぎたい場合は、入門17の ScoreManager(DontDestroyOnLoad)を参照
- シーン名は Build Settings に登録した名前と一致させる
発展アイデア
- スコアを表示する(ScoreManager を導入)
- ハイスコアを保存する(PlayerPrefs)