🎮 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の設定
- CanvasScaler コンポーネントを開く
- 「UIスケールモード」を 画面サイズに拡大 に設定
- 「参照解像度」を X:800 / Y:600 に設定
これで画面サイズに合わせてUIがスケールするようになります。
タイトル画面とクリア画面の作成
UI > Imageを追加し、背景用の画像を設定- 子オブジェクトとして
TextやButtonを追加し、タイトルや「Start」ボタンなどを配置します

GameUI(上部メニュー)
ゲーム中に常に表示したいボタンやアイテムボックス配置の為のスペースを確保します。
UI > Image(またはPanel)を追加し、キャンバス上部に配置- サイズを 800×100 に設定

※オプションボタンやアイテムボックスは別の記事で作成します
ゲーム画面の作成
Stage(800×500)オブジェクトを作り、その中に背景画像を配置- 常に
GameUIが上部に残るよう、位置関係を調整します

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} が登録されていません”);
}
}
}
インスペクター設定
BackgroundManagerスクリプトを Background にアタッチbackgroundsの配列を開き、TypeにEnumを設定し、BackgroundObjectに各背景をドラッグ&ドロップGameUIに上部パネルをアタッチ
ボタン設定
- StartButton の
OnClick()に
BackgroundManager → GameStart()を設定
動作チェック
- 起動時に タイトル画面 が表示されるか
- スタートボタン を押すと North 背景に切り替わるか
- GameUI はゲーム画面のみ表示されるか
まとめ
今回は、Unityの1つのシーンで「タイトル」「ゲーム」「クリア」画面を切り替える方法を紹介しました。Enum と BackgroundManager を使うことで、複数の背景を安全かつ簡単に管理できます。
✅次回は、移動矢印を使って背景(東西南北)を切り替える方法を解説します




コメント