シーンの切り替えを行う際、Unity標準のSceneManager.LoadScene関数では、トランジション効果なしに突然画面が切り替わります。
シーンの切り替え頻度が高い場合は問題ないですが、レベルが切り替わるシーンなどでフェードインやフェードアウトの効果をつけてシーンチェンジを行いたい方もいると思います。
カメラいっぱいに画像を配置して透過度を変更していくなどの方法で実装できると思いますが、大変そうですよね。
今回は、手軽にフェードのトランジションを実装できる無料アセット、Simple Fade Scene Transition Systemを紹介します。
Simple Fade Scene Transition Systemについて
Simple Fade Scene Transition Systemは、名前の通りシーンのトランジションを行うアセットです。
アセットストアから無料でダウンロードできます。
このアセットの特徴は、一行書くだけでシーン切り替え時に、フェードインとフェードアウトの効果をつけられることです。
実装する手間は、SceneManager.LoadScene関数を呼び出すのとほとんど変わりません!
フェードの色を変更したり、フェードにかかる時間を変更したりとカスタマイズ可能な点も魅力的です。
Simple Fade Scene Transition Systemの使い方
Simple Fade Scene Transition Systemをダウンロードし、パッケージマネージャーからインポートします。
InitiateクラスのFadeという関数を使えるようになりますので、以下のような引数を与えて呼び出します。
Initiate.Fade("ロードするシーン", フェードの色, フェードの速さの乗数);
ロードするシーンはstring型、フェードの色はColor型、フェードの速さの乗数はfloat型の引数を与えます。
以下のようにコーディングできます。
Initiate.Fade("SampleScene", Color.black, 1.0f);
実際に使ってみた
動作確認用にScene1とScene2を用意し、マウスの左ボタンをクリックするとシーンが切り替わるスクリプトをメインカメラにアタッチしました。
作成したスクリプトはこちらです。
インスペクターからフェードのパラメータを変更できるように、グローバール変数にはSerializeField属性をつけています。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class FadeScene : MonoBehaviour { [SerializeField] private string loadScene; [SerializeField] private Color fadeColor = Color.black; [SerializeField] private float fadeSpeedMultiplier = 1.0f; private void Update() { if (Input.GetMouseButtonDown(0)) { Initiate.Fade(loadScene, fadeColor, fadeSpeedMultiplier); } } }
このようなスクリプトを作成すると、複数のシーンで使い回しできるので便利ですね!
実行してみると、フェードインとフェードアウトの効果が適用されているのを確認できました。
SceneManager.LoadScene関数と同様、Build SettingsのScenes In Buildに遷移先のシーンを追加しないと動作しないので注意が必要です。
追加したいシーンを開いて、Add Open Sceneをクリックしてください。
まとめ
Simple Fade Scene Transition Systemは、シーン切り替え時に効果をつけたいときに便利なアセットでした。
簡単に使用でき、無料でダウンロードできるアセットなので、お手軽にゲームをパワーアップしたい方におすすめです!