音をフェードイン/フェードアウトさせる面白い方法が思いついたのでメモしておこうと思う。

デモ
http://db.tt/PoiKt9Yi

今回思いついた方法は、コンポーネントのenableを切り替えるだけで音をフェードアウト/フェードインするといったもの。

単純な話、 Start や Awake、それに Update はコンポーネントの enable が false になると動作を停止してしまうが、実はコルーチンで実行している処理は停止しない。その事を利用して、Enable や Disable のタイミングでコルーチンを呼び出し、ボリュームコントロールを任せるといった方法を思いついた。

なおコルーチンを呼び出す際には、コンポーネントを アタッチ している gameObject のactiveがtrueでないと "Coroutine couldnt be started (中略)"といったエラーが発生するので注意が必要だ。

スクリーンショット 2013-04-29 2.12.03

フェードのような処理は地味に管理が面倒なので、enableの ON/OFF で管理が出来るこの方法は便利な気がする。ただサンプルを作成していて思ったが、これはアニメーションカーブで管理したほうが楽かもしれない。ブラーブラーブラー