Unityでフェードイン・アウトを簡潔に書いてみる
Kazuma.です。
Unityでシーンの切り替え時などにフェードイン・アウトをしたい時があります。
いろいろ調べたのですが、うーんイマイチ難しい書き方を・・・と思っていました。
すごく簡潔に書いてみました。
これが正解とかではないのですが、もし使いやすい!と思ってくれる方がいれば幸いですね。
機能
このスクリプトの機能としては
- フェードイン
- フェードアウト
- フェードオン
この3つがあります。
インとアウトはわかると思います。
フェードオンとは
ゲームのシーンを切り替えずに、フェードイン・アウトをさせたい場合があると思います。
時空を変えるとか、風景が変わるとかなど。
そんな時に使えるのがフェードオン!
boolをtrueにするだけでフェードアウトが始まり、フェードインもしてくれます。
こんな感じです。
シーンは切り替わっていません。
使い方
このコードはフェードアウト以外であればコードをいじらなくても済むので僕も基本的に使い回ししてます。
1. シーンに空のゲームオブジェクトFadeManagerを作り、FadeManager.csをアタッチ
2. UI/Imageを画面いっぱいに配置(VRモードの場合はCanvasをWorldSpaceにしてカメラ全体に映るように)
3. アタッチしたFadeManager.csのInspectorから2のイメージを選択
4. 外部、もしくは内部から 使いたい機能のbool + enableFadeをtrueに変更
5. フェードアウトを利用時は61行目あたりにその処理を書く。
簡単だと思います。
VRでも使えるのでいいかなぁ、という見解です。
注意
Speedの範囲が大体0.1以下であれば問題なく動きます。
ちょっと解説
大雑把な仕様としてはフェードを行っているのはImageのAlphaを透明にしたりしなかったりしているだけです。
それをCounterで・・・という感じです。
追記(12/17)
処理を行うためにCallbackを使った方が良さそうです。