テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

Unity 5のオーディオ機能について(1)音の再生方法とオーディオミキサーについて

Unity5よりUnityのオーディオ周りに大きな変化がありました。今日はUnity5のオーディオ周りの使い方について確認していきます。

 

大雑把な機能の変更点としては、大体下のような認識です。

  1. オーディオの音源をグループ化して制御可能になった
  2. グループにエフェクトを設定可能になった
  3. データのフォーマットがPCM/ADPCM/Vorbis/MP3になった
  4. 音のバックグラウンド読込に対応した

基本的な使い方

Unity5でも基本的な使い方はほぼ変化ありません。つまり、AudioSourceで音を出しAudioListenerで音を聴きます。

f:id:tsubaki_t1:20150520223815p:plain

一つ大きく変化があったのが、2D Soundの扱いです。Unity4では2D Soundの情報はAudioClip側が持っていたのですが、Unity5からAudioSource側が持つようになりました。

また完全な2D/3Dだけでなく、部分的な2Dといった「何となく音の向きが分かるけど常に音楽が聞こえる」状況も設定可能になりました。

f:id:tsubaki_t1:20150520224152p:plain

[Unity5] 3D Sound設定 | Unity | Zabaglioneのさもありなん

 

音を再生するには、Play On Awakeを使用するか、API: AudioSource.Playメソッドを呼び出します。UIのEventから呼び出しもできます。

Unityの新GUI、UGUIのイベント制御について - テラシュールブログ

f:id:tsubaki_t1:20150520224348p:plain

再生中の音を確認する

Unity5よりプロファイラに現在再生中の音・及び再生中のAudioSourceが確認出来るようになったみたいです。該当オブジェクトの所属するグループや、音量等も確認出来るので中々に良さそうです。

f:id:tsubaki_t1:20150521003806p:plain

オーディオミキサー

オーディオミキサーはUnity5から追加された機能です。この機能で複数のAudioSourceのボリュームを一括制御/Offにしたり、オーディオグループにエフェクトを付与するといった事が可能になりました。

Audio Mixerを作るには、ProjectブラウザのCreate >Audio Mixerから作成します。

f:id:tsubaki_t1:20150520231207p:plain

オーディオミキサーを使用するシナリオとしては、音全体・効果音・BGM・ボイスのボリューム制御するがあります。全体の音量を調整すれば全体が減りますが、効果音/BGMは個別に設定できるといった感じです。

Unity - マニュアル: An overview of the concepts and AudioMixer

グループ

これを実現するために、AudioMixerに各要素ごとのグループを作成します。

f:id:tsubaki_t1:20150520231902p:plain

各要素のボリュームは、ミキサーのボリュームのところで制御します。親のボリュームは子に影響するので、Masterボリュームを操作すると全体のボリュームが増減し、子のボリュームを増減させると、対象のボリュームのみ増減します。

f:id:tsubaki_t1:20150520232202p:plain

各グループへの所属はAudioSource毎に行います。AudioSourceにはoutputの項目があり、ここにグループをD&Dする事で、所属するグループを設定します。

f:id:tsubaki_t1:20150520232429p:plain

f:id:tsubaki_t1:20150520232446p:plain

Unity - マニュアル: AudioGroup インスペクター

また、ミキサーで指定のグループのみ音を出す/指定のグループの音を出さないようにする等も確認出来ます。

f:id:tsubaki_t1:20150521003322p:plain

スナップショット

スナップショットは、オーディオグループの音量やエフェクトの設定を保存しておき、ブレンド・再現する事ができます。

f:id:tsubaki_t1:20150523234713g:plain

下のコードは、それをランタイム時に実行するコードです。Snapshot1からSnapshot2へ最終的なブレンドがsnapshot1が0%、Snapshot1が100%になるように、3秒かけて移行します。

f:id:tsubaki_t1:20150520235518p:plain

gist.github.com

また、AudioMixer.SetFloatで指定のボリュームを設定することも出来るみたいです。

tsubakit1.hateblo.jp

 次回は各グループに設定できるエフェクトについてです。

参考

[Unite 2015 TOKYO]Unity 5オーディオ新機能の真髄 from Unity Technologies Japan G.K. on Vimeo.

 

docs.unity3d.com