Unity 5.2 BGMのフェードイン・フェードアウト

この前画面のフェードイン・アウトを作ったので、今度は

BGMのフェードイン・フェードアウトを作ることになりました。

 

インターネットで調べたら簡単に使える便利なアセットが配布されてました。

 

こちら

naichilab.blogspot.jp

 

 

これを使ってもよかったんですが、

この中身を見たらなんだか難しいことをやってるんですよね。

 

あるものを利用するのはいいんですが、Unity5になってAudioMixerが新しく使えるんだから、もしかしたらもっと簡単に実装できるのではないかと思ってもう少し探してみました。

 

その結果、どうもAudioMixerを色々といじれるクラス?があることが分かりました。

公式マニュアルで探してもなかなか見つからないと思ったら、UnityEngine.Audioという所に入ってたようです。

 

そして、AudioMixerを使う場合はAudioMixerSnapshotというのを使うようです。

 

f:id:Manakel:20150917204606j:plain

 

メニューのWindowにあるAudioMixerを開いて"Mixers"の右の方にある+でAudioMixerを追加するとこんな感じになるのですが、ここのSnapshotsという所にBGMとかの設定を記憶させて、ここにあるプリセットを呼び出すことで、BGMのボリュームとか、なんかいろいろをいじれるようです。

 

Mixerが出力の設定なので、ここにBGMとかSEとかVOICEとか作って管理すればゲームのコンフィグみたいにできるんですねきっと。

 

ただ、使い道はもっと色々ありそうです。何かに近づいたり、何かのトリガーを引くと音の感じが変わるときとか(部屋から外に出た時など)に使えるそうです。

 

さて、肝心のフェード効果ですが、AudioMixerSnapshot.TransitionToという関数で、スナップショットを切り替えるときに、float値で数値を渡すとそのfloat値分の間隔でスナップショットを入れ替えてくれるようです。

 

ただ、ここで注意しないといけないのは、この時のfloat値は”秒”とかではないということです。

 

フェードにかかる時間の指定がどうも難しいようです。実際にやってみないとわからないような感じですね。

 

・・・そんなわけで、音のフェードに関しては一番最初に紹介したブログのクラスを使うのがいいんじゃないかと思います。

 

私はスナップショットで事足りたので使いませんでしたが。

 

もしかしたら、フェード時間の管理もTime.deltaTimeみたいなものを使って上手いことできるのかもしれませんが、私には分からなかったよ。

 

とりあえずAudioMixerはなんだかおもしろそうだということはわかりました。