✅前回の記事はこちら👇
🎮 Unity6で進める
「1つのシーンで完結する2D脱出ゲーム講座」第14回です。
今回は、ゲームクリア後 や ゲーム途中 に
【 ゲームデータをリセットして タイトル画面へ戻る処理 】を実装します。
本講座の脱出ゲームは短編のため、
セーブデータは作成せず、すべて初期化する方式を採用します。
この記事では以下の処理を実装します👇
- ✅ アイテムボックス内の取得アイテムを全削除
- ✅ 白フェード演出でタイトル画面へ戻る
- ✅ BGMをフェードアウトして停止
🎥制作例動画はこちら👇
作成するUI・オブジェクト構成
① クリア画面からタイトルへ戻るボタン
ClearPanel
├─ ClearText(脱出成功!などのテキスト)
└─ ReturnToTitleButton(タイトルへ戻るボタン)
ゲームクリア後、そのままタイトルに戻れるボタンを用意します。
② オプション画面からタイトルへ戻る(確認付き)
ゲーム途中でタイトルへ戻る場合、
進行状況や取得アイテムが失われるため、注意書きパネルを表示します。
OptionPanel
├─ BGMSlider
├─ SESlider
├─ ToTitleButton(タイトル戻る)
└─ ReturnConfirmPanel(注意書きパネル)
| ├─ CoutionText(注意書きテキスト)
| ├─ Yes(はい)
| └─ No(いいえ)
└─ CloseOptionButton
- YES → データをリセットしてタイトルへ
- NO → オプション画面に戻る

OptionManager.cs を修正する
フィールドを追加
public GameObject confirmPanel; // タイトルに戻る確認パネル
メソッドを追加
// 「タイトルに戻る」ボタンから呼ぶ
public void OpenConfirm()
{
confirmPanel.SetActive(true);
}
public void OnClickNo()
{
confirmPanel.SetActive(false);
}
public void ReStartGame()
{
confirmPanel.SetActive(false);
CloseOption();
ItemBoxManager.Instance.ResetItems();
FadeController.Instance.FadeOutToTitle();
BGMManager.Instance.StopBGMFade();
}
インスペクターの設定
・ConfirmPanelをアタッチ
ボタンのクリック設定
| ボタン | 設定するメソッド |
|---|---|
| オプション画面「タイトルへ戻る」 | OpenConfirm() |
| 確認パネル YES | ReStartGame() |
| 確認パネル NO | OnClickNo() |
| クリア画面の戻るボタン | ReStartGame() |
ItemBoxManager.cs にリセット処理を追加
取得したアイテムをすべて初期化します。
public void ResetItems()
{
ItemDetailUI.Instance.Close(); //詳細画面を閉じる
items.Clear(); // アイテムリスト初期化
currentSlot = null;
foreach (var slot in slots)
{
slot.ClearItem(); // スロット表示を空に
}
}
👉 見た目・内部データ両方をリセットするのがポイントです。
FadeController.cs にタイトル用フェードを追加
タイトルに戻る処理
public void FadeOutToTitle()
{
StartCoroutine(FadeOutThenTitle());
}
private IEnumerator FadeOutThenTitle()
{
yield return StartCoroutine(Fade(0f, 1f));
BackgroundManager.Instance.SetBackground(BackgroundType.Title);
yield return StartCoroutine(Fade(1f, 0f));
}
白フェードで画面を隠してから
タイトル背景に切り替えることで、自然な演出になります。
BGMManager.cs 停止機能を追加
BGMをフェードアウトして停止
public void StopBGMFade(float fadeTime = 1.5f)
{
StartCoroutine(FadeOutBGM(fadeTime));
}
private IEnumerator FadeOutBGM(float fadeTime)
{
float startVol = audioSource.volume;
for (float t = 0; t < fadeTime; t += Time.deltaTime)
{
audioSource.volume = Mathf.Lerp(startVol, 0, t / fadeTime);
yield return null;
}
audioSource.Stop();
audioSource.volume = startVol; // 次回用に音量を戻す
}
}
👉 いきなり止めず、フェードアウトさせることで違和感を防止できます。
動作確認チェック
- ✅ オプション画面からタイトルへフェードして戻る
- ✅ 取得アイテムがすべてリセットされている
- ✅ BGMがフェードアウトして停止する
- ✅ クリア画面からも問題なくタイトルに戻れる
まとめ
今回は ゲームデータをリセットしてタイトルへ戻る① として、
- 取得アイテムの全初期化
- 白フェード演出での画面切り替え
- BGMのフェードアウト停止
を実装しました。
👉 次回は
ギミックの状態リセット・アイテムの再配置など、
ゲーム全体を「完全に初期状態」に戻す方法を解説します!


コメント