前提として オーディオ入門 の Audio Mixer(BGM/SEグループとExpose)まで済んでいると話が早いです。そこまで作ると、次に気になるのが 「BGMがずっと同じで単調」 ではないでしょうか。探索中も戦闘中も会話中も同じ曲がループするだけだと、どんなに良い曲でも場面の緊張感が出せません。
名作ゲームの音楽は、状況に反応して動いています。敵と戦い始めた瞬間に曲が切り替わり、会話が始まるとBGMがすっと下がって声が聞き取りやすくなる。この記事では、その動的な音楽制御を Audio Mixer の3つの武器——スナップショット・ダッキング・クロスフェード——で実装します。
この記事でわかること
- スナップショット——ミキサーの状態を保存し、状況に応じて滑らかに切り替える
- ダッキング——会話・SEの間だけBGMを自動で下げる(コード不要)
- クロスフェード——2つの曲を途切れさせずに入れ替える
- ExposeパラメータとdB変換で音量を滑らかに操作する
- 実践:通常↔戦闘の切り替え+会話ダッキングを1シーンで組む
動作確認環境: Unity 2022.3 LTS / Unity 6
3つの武器と前提
動的BGMと一口に言っても、やりたいことによって使う道具が変わります。まず全体像を押さえましょう。

| 武器 | 何をする | 主な使いどころ |
|---|---|---|
| スナップショット | ミキサーの音量・エフェクト状態をまるごと切り替える | 探索↔戦闘で音場の雰囲気を 変える |
| ダッキング | 声やSEが鳴る間だけBGMを自動で下げる | 会話・カットインで声を聞き取りやすくする |
| クロスフェード | 2つの曲を途切れずすり替える | ボス戦入場など、別の曲へ切り替える |
いずれも土台は オーディオ入門 の Audio Mixer です。BGM・SE・Voice の3グループを作り、それぞれの音量パラメータをExposeしてある状態から始めます。
スナップショット:状況でミキサー状態を切り替える
スナップショット(Snapshot) は、その瞬間のミキサー設定(各グループの音量やエフェクトの値)をまるごと保存したものです。「探索」「戦闘」「ボス」といった状態を保存しておき、ゲームの状況に応じて切り替えます。

スナップショットの作り方
- Audio Mixerウィンドウ左の Snapshots の「+」で「Combat」などを追加します
- そのスナップショットを選択した状態で、各グループの音量やエフェクトを戦闘向けに調整します(例:戦闘BGM グループを上げ、環境音を下げる)
- 別のスナップショットを選び直せば、いつでもその状態を編集できます。最初の1つ(既定は「Snapshot」)が起動時の状態です
コードから切り替える
スナップショットへの遷移は AudioMixerSnapshot.TransitionTo() の一行です。第1引数の遷移時間が、切り替わりの滑らかさになります。
using UnityEngine;
using UnityEngine.Audio;
public class MusicStateController : MonoBehaviour
{
// Inspectorでスナップショットアセットを割り当てる
[SerializeField] private AudioMixerSnapshot explorationSnapshot;
[SerializeField] private AudioMixerSnapshot combatSnapshot;
private AudioMixerSnapshot current;
void Start()
{
current = explorationSnapshot;
}
public void EnterCombat()
{
if (current == combatSnapshot) return; // 同じ状態への無駄な切り替えを防ぐ
combatSnapshot.TransitionTo(1.5f); // 1.5秒かけて戦闘の音場へ
current = combatSnapshot;
}
public void ExitCombat()
{
if (current == explorationSnapshot) return;
explorationSnapshot.TransitionTo(2.0f); // 戻りは少しゆっくり
current = explorationSnapshot;
}
}
複数を混ぜたいとき:
mixer.TransitionToSnapshots(snapshots, weights, time)を使うと、複数のスナップショットを重み付きでブレンドできます。「戦闘度合い」に応じて探索と戦闘を70:30で混ぜる、といった連続的な変化に向いています。
ポイントは、探索用のBGMも戦闘用のBGMも鳴らしっぱなしにしておき、スナップショットで音量バランスだけを切り替えることです。曲の再生位置がずれないので、切り替わりが自然になります。
ダッキング:会話・SEの間だけBGMを下げる
会話ボイスやカットインのSEが鳴っているのにBGMが大きいままだと、肝心の声が埋もれます。かといって手動で下げると戻し忘れが起きます。そこで使うのが ダッキング(Ducking) ——「声が鳴っている間だけBGMを自動で凹ませる」仕組みです。

嬉しいのは、これが コードなしでミキサーの配線だけで動くことです。
- BGMグループに 「Add Effect > Duck Volume」 を追加します
- Voice(またはSE)グループに 「Add Effect > Send」 を追加し、送り先(Receive)を BGMグループのDuck Volume に設定します
- Sendの Send level を0dB付近まで 上げます
- BGMグループのDuck Volumeで Threshold(発動する音量)・Ratio(下げる強さ)・Attack / Release(下がる/戻る速さ) を調整します
これで、Voiceグループから音が出るたびにDuck VolumeがBGMを自動で下げ、声が止むとReleaseの時間でふわっと戻ります。「声が鳴る→BGMが下がる」を毎回コードで書く必要はありません。
Attack/Releaseの目安: Attackを短く(数ms〜数十ms)すると即座に下がり、Releaseを長め(300〜800ms程度)にすると戻りが自然になります。Releaseが短すぎると、会話の「間」のたびにBGMがバタつくので注意します。
クロスフェード:曲を途切れず入れ替える
スナップショットは「同じ曲たちの音量バランス」を切り替える道具でした。一方、まったく別の曲へ入れ替えたい(フィールド曲→ボス曲など)ときは、クロスフェードが出番です。1曲をフェードアウトしながら、もう1曲をフェードインさせて、無音の瞬間を作らずにすり替えます。
