【Unity6】2D脱出ゲームの作り方①|1つのシーンでタイトル・ゲーム画面・クリア画面を切り替える方法

Unity6で2D脱出ゲーム|タイトル画面の作成 ゲームの作り方

🎮 Unityで2D脱出ゲームを作りたいけど、「タイトル」「ゲーム」「クリア」をどう切り替えればいいかわからない……
そんな方に向けて、1つのシーンで画面を切り替える方法を解説します!

この記事では Unity 6 を使用し、スマホやPCでも遊びやすい 800×600 の解像度で進めます。

👀 完成イメージ

今回作る構成では、タイトル → ゲーム画面 → クリア画面を 1つのシーン で管理します。

オブジェクト構成(ヒエラルキー)

Canvas(800×600)
 └─ Background(空のオブジェクト)
   ├─ GameUI(上部UI:800×100)
   ├─ TitlePanel(800×600)
   ├─ ClearPanel(800×600)
   └─ Stage(800×500)
     ├─ North
     ├─ East
     ├─ South
     └─ West

まずは Canvas を作成し、その中に背景を管理する空オブジェクト Background を配置します。

Canvasの設定

  1. CanvasScaler コンポーネントを開く
  2. 「UIスケールモード」を 画面サイズに拡大 に設定
  3. 「参照解像度」を X:800 / Y:600 に設定

これで画面サイズに合わせてUIがスケールするようになります。

タイトル画面とクリア画面の作成

  1. UI > Image を追加し、背景用の画像を設定
  2. 子オブジェクトとして TextButton を追加し、タイトルや「Start」ボタンなどを配置します
Unity6で2D脱出ゲーム|タイトル画面を作成し、画像、テキスト、スタートボタンを配置した画像

GameUI(上部メニュー)

ゲーム中に常に表示したいボタンやアイテムボックス配置の為のスペースを確保します。

  1. UI > Image(またはPanel) を追加し、キャンバス上部に配置
  2. サイズを 800×100 に設定
Unity6で2D脱出ゲーム|ゲーム中に表示する上部メニューを作成した画像

※オプションボタンやアイテムボックスは別の記事で作成します

ゲーム画面の作成

  • Stage(800×500)オブジェクトを作り、その中に背景画像を配置
  • 常に GameUI が上部に残るよう、位置関係を調整します
Unity6で2D脱出ゲーム|ゲーム画面に背景画像を配置した画像

Enumで背景を定義する

背景を簡単に切り替えられるように、Enumで一覧化しておきましょう。

public enum BackgroundType
{
 Title,
 Clear,
 North,
 East,
 South,
 West,
}

このスクリプトは どのオブジェクトにもアタッチしません
他のスクリプトから呼び出して使うだけでOKです。

BackgroundManagerスクリプト

画面切り替えを管理するスクリプトを作成します。

using UnityEngine;
using System.Collections.Generic;

public class BackgroundManager : MonoBehaviour
{
 [System.Serializable]
 public struct BackgroundEntry
 {
  public BackgroundType type; // Enum名(例:North)
  public GameObject backgroundObject; // 対応する背景オブジェクト
 }

 [SerializeField] private BackgroundEntry[] backgrounds;

 private Dictionary<BackgroundType, GameObject> bgDict;
 public static BackgroundManager Instance; //シングルトン
 public GameObject GameUI;

 void Awake()
 {
 bgDict = new Dictionary<BackgroundType, GameObject>();
 foreach (var entry in backgrounds)
 {
   if (!bgDict.ContainsKey(entry.type))
   bgDict[entry.type] = entry.backgroundObject;
  }

  if (Instance == null) Instance = this;
  else Destroy(gameObject);
 }

 void Start()
 {
 GameUI.SetActive(false);
 SetBackground(BackgroundType.Title);
 }

 //スタートボタンから呼び出す
 public void GameStart()
 {
  GameUI.SetActive(true);
 SetBackground(BackgroundType.North);
 }

 // 背景を切り替える
 public void SetBackground(BackgroundType type)
 {
  // 全背景をOFF
   foreach (var bg in bgDict.Values)
   if (bg != null)bg.SetActive(false);

  // 指定背景だけON
  if (bgDict.TryGetValue(type, out GameObject selected))
  {
   selected.SetActive(true);
  }
  else
   {
   Debug.LogWarning($”背景 {type} が登録されていません”);
  }
 }
}

インスペクター設定

  1. BackgroundManager スクリプトを Background にアタッチ
  2. backgrounds の配列を開き、
    Type にEnumを設定し、BackgroundObject に各背景をドラッグ&ドロップ
  3. GameUI に上部パネルをアタッチ

ボタン設定

  • StartButtonOnClick()
     BackgroundManager → GameStart() を設定

動作チェック

  • 起動時に タイトル画面 が表示されるか
  • スタートボタン を押すと North 背景に切り替わるか
  • GameUI はゲーム画面のみ表示されるか

まとめ

今回は、Unityの1つのシーンで「タイトル」「ゲーム」「クリア」画面を切り替える方法を紹介しました。
EnumBackgroundManager を使うことで、複数の背景を安全かつ簡単に管理できます。

✅次回は、移動矢印を使って背景(東西南北)を切り替える方法を解説します

コメント

タイトルとURLをコピーしました