LoginSignup
3
1

More than 1 year has passed since last update.

【Unity】GameOver画面を表示する方法パターンまとめ

Last updated at Posted at 2023-01-09

はじめに

GameOver画面を作成する方法にも様々な遷移方法があるので忘れないようにまとめました。
GameOverになった時の遷移方法としてまとめていますが、他の場面でも使いまわせます。

実装動作

障害物に当たったらゲームオーバー画面が表示される。
スクリーンショット 2023-01-09 7.23.39.png
スクリーンショット 2023-01-09 7.24.04.png

衝突判定をタグで管理して画面遷移する方法3選

はじめにやっておくこと
スクリーンショット 2023-01-09 7.26.42.png
1.赤枠を作成する
  Hierarchy > UI> Canvas(GameOverCanvas)
  UI > Panel(GameOverPanel)
  UI > Legacy > Text(GameOverText)
2.GameOver.csをGameOverCanvasへアタッチ
3.Obstacle.csをObstacleへアタッチ
4.PlayerにBoxCllider(IsTriggerチェック),Rigidbody追加
5.ObstacleにBoxCllider追加
6.Playerタグにする
スクリーンショット 2023-01-09 7.41.20.png

パターン1 enabledを使用してGameOver画面を表示する方法

1.スクリプト記述

(GameOver.cs)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class GameOver : MonoBehaviour
{

    //キャンバス用
    private static Canvas gameOverCanvas;

    private void Awake()
    {
        //Canvasコンポーネント取得
        gameOverCanvas = GetComponent<Canvas>();
    }

//パネルを開く用の関数 static呼び出し可能
    public static void GameOverShowPanel()
    {
        //ゲーム内の時間を止める
        Time.timeScale = 0f;

        //ボタンを有効にする
        //GameOverCanvasのCanvasのチェックをデフォルトで外すと関数が呼ばれた時にtrueになる(衝突した時に表示される)
        gameOverCanvas.enabled = true;
    }

    //ゲームを再スタートする関数
    public void ReStartGame()
    {
        //止めたゲーム内の時間を戻す
        Time.timeScale = 1f;

        //シーン再読み込み
        SceneManager.LoadScene(0);
    }
}
(Obstacle.cs)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Obstacle : MonoBehaviour
{
    private void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.CompareTag("Player"))
        {
            GameOver.GameOverShowPanel();
        }
    }
}

2.チェックをはずしておく
スクリーンショット 2023-01-09 7.38.36.png

パターン2  シーン遷移(シーン名)でGameOver画面を表示させる方法

1.MainSenesをセーブする
2.File > newSenes > Seve(GameOverSenes)
3.スクリプト記述
 パターン1のGameOverShowPanel関数を変更

 //パネルを開く用の関数 static呼び出し可能
    public static void GameOverShowPanel()
    {
        //ゲーム内の時間を止める
        Time.timeScale = 0f;

        //ボタンを有効にする
        //GameOverCanvasのCanvasのチェックをデフォルトで外すと関数が呼ばれた時にtrueになる(衝突した時に表示される)
        gameOverCanvas.enabled = true;

こちらへ変更

    //パネルを開く用の関数 static呼び出し可能
    public static void GameOverShowPanel()
    {
        //ゲーム内の時間を止める
        Time.timeScale = 0f;

        //GameOverSceneを呼び出す
        SceneManager.LoadScene("GameOverScene")
    }

パターン3  シーン遷移(ファイル番号)でGameOver画面を表示させる方法

1.MainSenesをセーブする
2.File > newSenes > Seve(GameOverSenes)
3.File > BuildSettings > GameOverSenes追加
4.スクリプト記述
パターン1のGameOverShowPanel関数を変更

 //パネルを開く用の関数 static呼び出し可能
    public static void GameOverShowPanel()
    {
        //ゲーム内の時間を止める
        Time.timeScale = 0f;

        //ボタンを有効にする
        //GameOverCanvasのCanvasのチェックをデフォルトで外すと関数が呼ばれた時にtrueになる(衝突した時に表示される)
        gameOverCanvas.enabled = true;

こちらへ変更

       //パネルを開く用の関数 static呼び出し可能
    public static void GameOverShowPanel()
    {
        //ゲーム内の時間を止める
        Time.timeScale = 0f;

        //GameOverSceneを呼び出す
        SceneManager.LoadScene("1")
    }
3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1