Unityでシーンを移動する時に「フェード」や「アニメーション」を加えてみます。画面が切り替わる時に徐々に暗くしたり、部分的に暗くする感じですね。簡単な感じで実装してみます。
はじめに
Unityのバージョンは2021.3.14f1です。スクリプトとアニメーションを利用する2パターンを実装してみます。
まずは、二つのシーンを用意し、BuildSettingsに追加しておきます。

スクリプトで実装
はじめにスクリプトで簡単に実装してみます。
下記のような感じで徐々に暗くなってシーンが切り替わります。切り替わったのが分かりやすいようにシーン名を表示してます。

オブジェクトの追加
「UI」→「Panel」を追加。

画面全体が真っ黒になるように「Rect Transform」の値を0にします。


ImageのColorから透明度を変更して透明(A:0)にします。この透明度を上げることで徐々に画面を暗くしていきます。

スクリプトの作成
下記スクリプトを作成、スクリプト名は「ChangeScene」です。
using System.Collections;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class ChangeScene : MonoBehaviour
{
[SerializeField] private Image _PanelImage;
[SerializeField] private float _speed;
private bool isSceneChange;
private Color PanelColor;
private void Awake()
{
isSceneChange = false;
PanelColor = _PanelImage.color;
}
public void blackout()
{
StartCoroutine(Sceneblackout());
}
private IEnumerator Sceneblackout()
{
while (!isSceneChange)
{
PanelColor.a += 0.1f;
_PanelImage.color = PanelColor;
if (PanelColor.a >= 1)
isSceneChange = true;
yield return new WaitForSeconds(_speed);
}
SceneManager.LoadScene("Scene B");
}
}
やっていることは簡単で、blackout()が呼ばれたら徐々に暗くしていき、真っ暗になったらシーンを移動するって感じです。暗転っぽい感じですね。
スクリプトをカメラにアタッチして、パラメータをセットすればOK。Speedは暗転する速度ですね。

あとは、blackout()をシーンの切り替えたい場所で呼び出せばOK。上のサンプルではボタンを設置して、ボタンクリックに割り当ててます。
アニメーションでシーン切り替え
次にアニメーションを利用してみます。下記のような「左から黒い部分が進出」してくる感じにしてみます。

オブジェクト変更
Panelの設定を変更します。今回は画面サイズを1920×1080としているため、Rightを1920にします。ImageのColorも不透明(A:255)にします。

試しにRightの数字を減らして0に近くした場合に、画面が左から暗くなればOKです。この動作(数字の減少)をアニメーションを利用して設定していきます。
アニメーションの設定
Panelを選択した状態でAnimationウィンドウから「Create」を選択します。

Animationウィンドウが無い場合は、画面上メニューから「Window」→「Animation」→「Animation」を選択。

「Create」を選択したらidleと名前を入力、「Create New Clip…」から「change」も追加します。

アニメーションの設定は、赤い録画ボタンを押して、初期状態(Right:1920)と、画面全体が真っ黒な状態(Right:0)をセットします。時間は任意の位置でOKです。

AnimatorのParametersからトリガーを追加します。

idleからchangeに移動する条件にトリガーを追加します。

スクリプトの作成
スクリプトを下記に変更して、オブジェクトのパラメータをセットし直します。
using System.Collections;
using UnityEngine;
using UnityEngine.SceneManagement;
public class ChangeScene : MonoBehaviour
{
[SerializeField] private Animator anim;
public void ChangeScene()
{
StartCoroutine(LoadScene());
}
IEnumerator LoadScene()
{
anim.SetTrigger("changeflag");
yield return new WaitForSeconds(1.2f);
SceneManager.LoadScene("Scene B");
}
}
これでChangeScene()を呼び出すと左から徐々に黒くなって、真っ黒になった後に次のシーンに遷移するようになります。
この動作自体はスクリプトでも出来ますが、少し変化を加えたいならアニメーションで実装と言う感じですかね。