シーン切り替えにフェードイン/アウト
シーンを切り替える際に、
フェードイン/アウトの効果をつけようと思いました。
SceneA -> fadeOut -> (Load SceneB) -> fadeIn
SceneAから暗転、暗転しきった段階で、
次のシーンを読み込んでおいて、暗転から復帰。
だいたいこんな流れのつもりで。
ところが。。。
フェードインしない
じゃあ、やってみようと思ったところ、
Aから暗転するが、Bを読み込んだ時点で、
Bがいきなり表示されます。
情緒も何も無いったりゃありゃしない。
o(`ω´*)oプンスコ
シーンのロード時にオブジェクトは破棄される
なぜフェードインしないかっていうと、
わたしが実装したフェードイン/アウトには、
板ポリを作ってカメラに写して、α値を返ることで実装していたので、
次のシーンを読み込んだ時点で、フェード用のオブジェクトが破棄されていたんですね。
シーンがロードされようがオブジェクトを消さない方法
さすが、Unity。 ちゃんと対応策が用意されています。
ズバッと
DontDestroyOnLoad
を使いました。
消したくないオブジェクトを引数に指定するか、
わたしの場合は、フェード用のインスタンスの初期化メソッド中に、
DontDestroyOnLoad(this)
を仕込んでおきました。
これで、別シーンがロードされても、 オブジェクトは消えず、フェードインまでやってくれるようになりましたよ。
まぁ、それだと、ずっと残っちゃうので、フェードインして役割を終えたオブジェクトは、
Destroy(this)
して自爆します。