【Unity6】2D脱出ゲームの作り方⑭|ゲームデータをリセットしてタイトルに戻る①

オプションメニューからタイトルに戻る注意書きパネル ゲームの作り方
タイトルに戻る注意書きパネル

✅前回の記事はこちら👇

🎮 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()
確認パネル YESReStartGame()
確認パネル NOOnClickNo()
クリア画面の戻るボタン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のフェードアウト停止

を実装しました。

👉 次回は
ギミックの状態リセット・アイテムの再配置など、
ゲーム全体を「完全に初期状態」に戻す方法を解説します!

コメント

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