【Unity】コピペ化!BGMや効果音の再生・ループ再生をスクリプトで管理する

【Unity】コピペ化!BGMや効果音の再生・ループ再生をスクリプトで管理する

 ループ再生が途切れないBGMを再生したり、効果音SEを重ね合わせて表現したりなどスクリプトをコピペするだけで実装できます。Unity初心者の方でもわかりやすいように音の仕組みを簡単にまとめてみました。カスタマイズしやすいようにコメントを書いてあるので安心してくださいね。

Unityの音の仕組み

オーディオソース(AudioSource)

 音源となるコーポネントです。このコーポネントが付いているオブジェクトから音が発生します。各パラメータの説明を以下にまとめてみました。

オーディオクリップ
AudioClip
音源のこと。ここにBGMやSEを入れます。
ゲーム開始時に再生
PlayOnAwake
チェックを外すと命令が出るまで音を鳴らしません。
ループ
Loop
チェックを付けるとループ再生します。
ボリューム
Volume
1~0でボリュームを変更できます。

オーディオリスナー(AudioListener)

 メインカメラにデフォルトで搭載されています。このコーポネントを簡単に説明すると、人間の耳のようなものです。このオーディオリスナーとオーディオソースとの距離によって音の大きさが変化したりします。

 FPSなどで敵が近くにいると足音が聞こえるのはこういった原理があるからですね。

 注意:動作中のオーディオリスナーは原則1つにしましょう。エラーの原因となります。

スクリプトで制御する

スクリプトはオーディオソースのコーポネントが付いているオブジェクトに張り付けてください。

スクリプトでBGMを再生する

//オーディオソースコーポネントをaudioに格納
AudioSource audio = GetComponent<AudioSource>();

//再生
audio.Play();

Play()は複数再生することはできません。BGMに最適で、効果音など重ねて再生したいときは別の方法で再生します。

スクリプトで効果音を再生する

//インスペクター上でSEを設定してください
public AudioClip SE1;
public AudioClip SE2;

//オーディオソースコーポネントをaudioに格納
AudioSource audio = GetComponent<AudioSource>();

//SE1をボリューム1で再生
audio.Play(SE1,1.0f);

//SE2をボリューム0.5で再生
audio.Play(SE2,0.5f);


 このように設定することで音を重ね合わせて再生することができます。