🔍Unity6 を使った「1シーン完結型・2D脱出ゲーム制作講座」です。
今回は、複数のボタンを正しい順番で押すことで解除される、脱出ゲーム定番のギミックを作成します。
「順番入力パズル」は、金庫・扉・装置解除など幅広く使える便利な仕組みです。
この記事では、
- ボタンの順番判定
- 間違えた時のリセット処理
- 解除後に操作できなくする方法
- DoorBase と連携したドア解錠
まで、初心者向けにわかりやすく解説します。
✅DoorBase についてはこちら👇

実装するギミック内容
🎥 動作例動画
- 特定の順番でボタンを押す→ギミック解除
- 解除後はパネル操作不可
- ドアが解錠され、開閉可能になる
設計ポイント
👉 間違えたら即リセット
👉 ただし最初から押し直せる(詰まらない)
ヒエラルキーの構成
Stage
└─ CenterDoorZoom(扉の拡大背景)
├─ Button1
├─ Button2
├─ Button3
└─ Button4
ポイント
- ギミックは 拡大背景(Zoom画面) に配置
- 各ボタンは UI > Image + Button を使用

OrderButton.cs(各ボタン)
using UnityEngine;
public class OrderButton : MonoBehaviour
{
[SerializeField] private int buttonIndex; // このボタンの番号
[SerializeField] private OrderButtonManager manager;
private bool isLocked = false;
public void OnClick()
{
if (isLocked) return;
SEManager.Instance.PlayClickSE();
manager.OnButtonPressed(buttonIndex);
}
public void Lock()
{
isLocked = true;
}
}
OrderButtonManager.cs
※ 順番判定&ドア解除
using UnityEngine;
public class OrderButtonManager : MonoBehaviour
{
[SerializeField] private int[] correctOrder;// 正解の順番
[SerializeField] private OrderButton[] buttons;
[SerializeField] private DoorBase targetDoor;
private int currentIndex = 0;
private bool isCleared = false;
public void OnButtonPressed(int index)
{
if (isCleared) return;
if (index == correctOrder[currentIndex])
{
currentIndex++;
// 全部正解
if (currentIndex >= correctOrder.Length)
{
Clear();
}
}
else
{
// 間違えたら最初から
currentIndex = 0;
}
}
void Clear()
{
isCleared = true;
targetDoor.Unlock();
SEManager.Instance?.PlayUnLockSE();
foreach (var button in buttons)
{
button.Lock();
}
}
}
インスペクター設定
OrderButton.cs
各ボタン(Button1~4)に設定
- ButtonIndex
→ ボタン番号(0~4)をそれぞれ入力 - Manager
→ 親オブジェクトにOrderButtonManager.csを追加してアタッチ。 - ボタンコンポーネントのクリック時に、OnClick()を設定
👉 Button1 を作成後、複製して Button2~4 を配置すると楽です。
OrderButtonManager.cs
・CorrectOrder→正解の順番に要素を追加
・Buttons→それぞれのボタン(OrderButton)を登録
・TargetDoor→開閉するドアにDoorBase.csを設定してアタッチ
その他の設定(DoorBase関連)
BackgroundTypeに CenterDoorZoom を追加- BackgroundManager の Backgrounds に登録
- DoorBase のLockedBackgroundID に CenterDoorZoom を設定
まとめ
今回は、順番にボタンを押して解除するギミックを実装しました。
- クリックしたボタン番号を管理スクリプトに送る
- 管理スクリプトで順番を確認
- DoorBase と連携してドアを解錠
🎥 作成したギミックの動画はこちら👇
関連記事




コメント