【Unity】BGMとSE(効果音)を同時に鳴らす方法
BGMが途切れることなく、効果音を鳴らす方法について考えます。
チュートリアル
準備する素材
サウンド音源を2つ用意します。
BGM(ループできるのが望ましい)
SE (効果音で、クリック音や爆発音)
オブジェクトの配置
サンプルのオブジェクト配置を確認してください。
GameObject(空のゲームオブジェクト)
Hierarchyウィンドウで、右クリックしてCreate Emptyを選択して作成します。
AudioSourceコンポーネント
GameObjectにAudioSourceコンポーネントを2つ追加します。
BGM再生ようとSE再生用にします。
それぞれの音源(AudioClip)をアウトレット接続しておきます。(Projectウィンドウからドラッグ&ドロップ)
BGMは、Play On AwakeとLoopにチェックを入れておきます。
スクリプト
AudioPlay.cs
スペースキーを押すとSEがなるようにしておきます。
using UnityEngine;
public class AudioPlay : MonoBehaviour
{
[SerializeField]
AudioSource seAudioSource;
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
seAudioSource.Play();
}
}
}
SE再生用のAudioSourceをAudioPlayスクリプトのSeAudioSourceフィールドにアウトレット接続します。
実行
実行してみて、SEが鳴ったときには、BGMの音量が下がるのを確認します。
(応用)SEを鳴らしている時は、BGMの音量を下げたい
SEやボイスを再生している時、BGMの音量を下げて聞き取りやすくしたい場合の対応になります。
使う機能
UnityのAudio Mixerを使います。
Audio Mixerの作成
Projectウィンドウで右クリック、Create -> Audio Mixerを選択。
名前をMixerとしておきます。
Audio MixerにBGMとSEを登録
作成したAudioMixerをダブルクリックします。
次の手順で順番に登録します。
- Groupsの右にある「+」記号をクリックします。
- ②ができるので名前をBGMとします。
- Groupsの下のMasterをクリックします。
- ③ができるので名前をSEとします。
ダッキング(Ducking)他の音が鳴った時、音量を下げる機能を追加
BGMを選択して下部の Add…をクリックします。
Duck Volumeを選択します。
同様にSEを選択して、右下のAdd…をクリック、Sendを選択します。
SEを選択、インスペクターでReceiveに「BGM-Duck Volume」を選択します。
Send levelが表示されるようになりますので、0dBに変更しておきます。
再度、BGMをクリックしてインスペクターのThresholdの値を-40に変更します。
AudioSourceコンポーネントの出力先をMixerにします。
- GemeObjectを選択して、AudioSourceのOutputにMixerのBGMを登録します
同様にSE向けのAudioSourceコンポーネントにSE(Mixer)を登録します。
実行
実行してみて、SEが鳴ったときには、BGMの音量が下がるのを確認します。
調整
次の画面を表示〔BGMを選択している状態のインスペクター)しながら再生すると、リアルタイムで確認ができますので、
次のような値を調整して期待するサウンドを作っていきましょう。
値を変更すると、グラフも変更されますので視覚的に調整ができます。
Threshold:閾値
Ratio:閾値を超えてからの減衰率
Attack Time:閾値を超えてから反応するまでの時間
ディスカッション
コメント一覧
まだ、コメントがありません