Unity++blog.

UnityやC#とかについて学習したことを書いてます

どのプロジェクトでも使える便利なオーディオ管理クラス

オーディオミキサーを使うまでもない場合のプロジェクトでも、ばらばらに適当なオブジェクトにオーディオソースをつけて音の管理をしていると、どこに付けたかな~??と見つけるのに困ってしまうので、オーディオをひとまとめにクラスを作成しました。

欠点としては3Dサウンドを扱うことができないことですが、2DサウンドでよいBGMの切り替えなどやセリフなどでは活躍してくれる場がありそうです。

 

今回は下のようなシーンを作成して、sphereがcubeに当たったら音を鳴らし、離れたら音が止まるという風にします。

f:id:nabesi777:20190318213429p:plain

 

空オブジェクト(名:AudioManager )を用意して下のスクリプトをアタッチします。

f:id:nabesi777:20190318213413p:plain

 

 

次にcubeにrigitbodyとboxcolliderをつけ、sphereにもcollierをつけます。

 そしてcubeに以下のスクリプトを作成してアタッチします。ブーリアンでイベント発生の切り替えをするようにしました。記入が漏れていますが、OnTriggerExit関数でブーリアンをfalseにすれば音をとめれます。

 

 

最後にAudioManagerにオーディオクリップやイベント通知をするオブジェクトを格納して終了です。今回はテストなので1つのオーディオソースクリップを入れました。

f:id:nabesi777:20190318214233p:plain

 sizeに1を入れて、ひとつのオーディオソースオブジェクトを生成して、各項目を入れていきます。

f:id:nabesi777:20190318214520p:plain

 

 無事に音が鳴ったり止まったりしました。

f:id:nabesi777:20190318214616p:plain