学習記事一覧 · Unity横スクロールアクション

【学習】ゲームオーバーとリトライ(シーン遷移の完成)

これまでの学習では、

  • タイトル画面を作り、スタートで Game に遷移した
  • 入門16で、敵に当たると GameOverScene に遷移する処理を学んだ

という形でシーンの流れを作ってきました。

しかし、ゲームオーバー画面でスコアを表示し、リトライできる仕組みをまとめて学んでいません。

ゲームオーバーとリトライ

を完成させます。

今回は GameOver シーンリトライボタンスコアの引き継ぎ(任意)を学びます。

今日作るもの

  • GameOver シーンを作成する
  • 「ゲームオーバー」とスコアを表示する
  • リトライボタンで Game シーンを再読み込みする
  • スコアを保持する ScoreManager(任意、入門17を参照)

ゲームの流れ

Title → スタートボタン

Game(プレイ)

敵に当たる → GameOver

リトライボタン → Game に戻る

手順1:GameOver シーンを作成する

  1. File → New Scene で新規シーンを作成
  2. File → Save AsGameOver として保存
  3. File → Build Settings で GameOver を追加

手順2:ゲームオーバー画面の UI を配置する

  1. Canvas を作成
  2. UI → Text で「ゲームオーバー」を表示
  3. UI → Text でスコア表示用(スコア未実装の場合は「0」などで仮表示)
  4. UI → Button で「リトライ」ボタンを配置

手順3:リトライボタンで Game に戻る

  1. 空の GameObject を作成し、GameOverManager と名付ける
  2. GameOverManager スクリプトを作成
using UnityEngine;
using UnityEngine.SceneManagement;

public class GameOverManager : MonoBehaviour
{
    public void OnRetryButtonClicked()
    {
        SceneManager.LoadScene("Game");
    }
}
  1. リトライボタンの On Click に GameOverManager.OnRetryButtonClicked を設定

手順4:PlayerController のシーン名を確認する

入門16の PlayerController で、敵に当たったときに読み込むシーン名を GameOver に合わせます。

SceneManager.LoadScene("GameOver");

Build Settings に登録したシーン名と一致させてください。


重要ポイント

  • リトライは Game シーンを再読み込みするだけなので、状態は初期化される
  • スコアを引き継ぎたい場合は、入門17の ScoreManager(DontDestroyOnLoad)を参照
  • シーン名は Build Settings に登録した名前と一致させる

発展アイデア

  • スコアを表示する(ScoreManager を導入)
  • ハイスコアを保存する(PlayerPrefs)