kazumalab tech log

流行りとリラックマと嵐が大好きです。技術的ログ。

Unityでフェードイン・アウトを簡潔に書いてみる

Kazuma.です。

Unityでシーンの切り替え時などにフェードイン・アウトをしたい時があります。
いろいろ調べたのですが、うーんイマイチ難しい書き方を・・・と思っていました。


すごく簡潔に書いてみました。
これが正解とかではないのですが、もし使いやすい!と思ってくれる方がいれば幸いですね。

機能

このスクリプトの機能としては

  • フェードイン
  • フェードアウト
  • フェードオン

この3つがあります。
インとアウトはわかると思います。

フェードオンとは

ゲームのシーンを切り替えずに、フェードイン・アウトをさせたい場合があると思います。
時空を変えるとか、風景が変わるとかなど。

そんな時に使えるのがフェードオン!
boolをtrueにするだけでフェードアウトが始まり、フェードインもしてくれます。

f:id:kazumalab:20160629230823g:plain
こんな感じです。
シーンは切り替わっていません。

使い方

このコードはフェードアウト以外であればコードをいじらなくても済むので僕も基本的に使い回ししてます。

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を使った方が良さそうです。