【Unity6】2D脱出ゲームの作り方⑬|画面フェード(白フェード)を追加して演出を強化する方法

ゲームスタート時の白フェード画面 ゲームの作り方
ゲームスタート時の白フェード画面

✅前回の記事はこちら👇

🎮 Unity6で進める「1つのシーンで完結する2D脱出ゲーム講座」第13回!
今回は ゲーム開始時・スタート時・クリア時に、白いフェード演出を追加する方法 を解説します。

ゲームの印象が変わるので、ぜひ取り入れてみてください!

🎥制作例動画

フェード演出の流れ

本記事で実装するのは以下の3つのフェードです。

  • ゲーム起動時 … 白 → フェードイン
  • スタートボタン押下時 … 白フェードアウト → フェードイン
  • ゲームクリア時 … 白フェードアウト → フェードイン

すべて同じフェードパネルを使い共通処理で実現します。

フェード用パネルを作成する

フェード演出には 透明度を変更できる白いUIパネル を使います。

▼ Hierarchy 構成例

├─ Stage
├─ Panel (アイテム詳細やオプション画面など)
└─ FadeController(すべてのオブジェクトより手前に表示)
   └─ FadePanel

オブジェクトの作り方

  1. Canvas の一番手前に空のオブジェクトを作成
     → FadeController にリネーム
  2. サイズを 800×600(画面いっぱい) に設定
  3. FadeController の子に UI → Panel を追加
     → 名前を FadePanel に変更
  4. 色を 白(透明度 0) に設定
  5. CanvasGroup コンポーネントを追加
      → Alpha(透明度)をスクリプトで操作するため

FadeController スクリプトを作成

フェードイン・フェードアウト共通の処理 をコルーチンで管理します。

FadeController.cs

using UnityEngine;
using System.Collections;

public class FadeController : MonoBehaviour
{
[SerializeField] private CanvasGroup fadePanel;
[SerializeField] private float fadeDuration = 1f;

public static FadeController Instance;

void Awake()
{
Instance = this;
}

void Start() // ゲーム起動時のフェードイン
{
StartCoroutine(Fade(1f, 0f));
}

public IEnumerator Fade(float from, float to)
{
float elapsed = 0f;
fadePanel.alpha = from;

// フェードアウト中はクリックをブロック
if (to > 0f) fadePanel.blocksRaycasts = true;

while (elapsed < fadeDuration)
{
elapsed += Time.deltaTime;
fadePanel.alpha = Mathf.Lerp(from, to, elapsed / fadeDuration);
yield return null;
}
fadePanel.alpha = to;

// 完全に透明になったらブロック解除
if (to == 0f) fadePanel.blocksRaycasts = false;
}

// タイトル → ゲーム開始
public void FadeOutToGame()
{
StartCoroutine(FadeOutThenGame());
}

private IEnumerator FadeOutThenGame()
{
yield return StartCoroutine(Fade(0f, 1f));
BackgroundManager.Instance.GameStart();
yield return StartCoroutine(Fade(1f, 0f));
}

//クリア時フェード
public void FadeOutToClear()
{
StartCoroutine(FadeOutThenClear());
}

private IEnumerator FadeOutThenClear()
{
yield return StartCoroutine(Fade(0f, 1f));
BackgroundManager.Instance.GameClear();
yield return StartCoroutine(Fade(1f, 0f));
}
}

インスペクターの設定

  1. FadeController にスクリプトをアタッチ
  2. fadePanelFadePanel をドラッグ
  3. タイトル画面の StartButtonの「クリック時」
    FadeController.FadeOutToGame() に変更

BackgroundManager の追加処理

クリア後に呼ばれるメソッドを追加します。

public void GameClear()
{
GameUI.SetActive(false);
SetBackground(BackgroundType.Clear);
BGMManager.Instance.PlayClearBGM();
}

動作確認チェック

  • ゲーム起動時:白 → フェードイン
  • スタートボタン押下:白フェードアウト → フェードイン
  • ゲームクリア時:白フェードアウト → フェードイン
  • (確認用)フェンスクリックで FadeOutToClear() を呼ぶとチェックしやすい

まとめ

今回は、白フェードを使った画面切り替え演出 を実装しました。
わずかな演出ですが、ゲームのクオリティが大きくアップします。

次回は ゲームクリア処理 について解説します!

コメント

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