Unity AudioMixer 機能解説資料

2025年4月14日

本資料では、Unity AudioMixerの機能であるスナップショットトランジション、およびダッキングについて解説します。各項目の概念や設定方法、実際のスクリプトサンプルについて詳しく説明しています。


1. 基本用語の解説

1.1 スナップショット

スナップショットは、AudioMixer内の特定のオーディオ設定(例:音量、エフェクト、ピッチなど)を保存した状態のことです。これを利用することで、シーンや状況に応じたオーディオ環境への切り替えが瞬時に可能となり、ゲームプレイ中の没入感を高められます。

1.2 トランジション

トランジションは、あるスナップショットから別のスナップショットへ滑らかに遷移するプロセスです。これにより、環境の変化(例えば、屋内→屋外、通常状態→戦闘状態)に伴った自然なオーディオの変化を演出できます。
トランジション方法としては、主に以下の種類が用意されています:

  • Linear Snapshot Transition: 一定の速度での線形遷移
  • Smoothstep Snapshot Transition: 始まりと終わりはゆっくり、中間が速い滑らかなカーブで変化
  • Squared Snapshot Transition: 初めはゆっくり、終盤にかけて急速に遷移
  • SquareRoot Snapshot Transition: 初めは急速、終盤にかけてゆっくり遷移
  • BrickwallStart / BrickwallEnd: 遷移の開始または終了で急激な変化を実現
  • Attenuation Snapshot Transition: 減衰具合に基づいた遷移

また、AudioMixerのパラメータをExpose to scriptすることで、スクリプトから個別のパラメータ(例:音量)の制御も可能になります


2. スナップショットの設定とトランジションの実装

2.1 スナップショットの準備と利用方法

  1. スナップショットの作成
    AudioMixer上で各シーンや状況に応じた音響設定を行い、スナップショットとして保存します。
  2. スナップショットの選択
    トランジションの実施に際して、現在のスナップショットと目的のスナップショットを指定します。
  3. トランジションの設定
    Inspector上でトランジションタイプ(リニア、スムーズステップ、スクエアド等)を選択し、設定します。
  4. トランジションのトリガー
    ゲーム内イベントに合わせ、スクリプトからトランジションを呼び出します。

2.2 サンプルコード:スナップショット間の遷移

以下は、現在の状態からsnapshot2へ1秒かけて遷移させる簡単なスクリプト例です。

using UnityEngine;
using UnityEngine.Audio;

public class AudioManager : MonoBehaviour
{
    public AudioMixerSnapshot snapshot1;
    public AudioMixerSnapshot snapshot2;

    // snapshot2へ1秒でトランジションを実施するメソッド
    public void TransitionToSnapshot2()
    {
        snapshot2.TransitionTo(1.0f);
    }
}

このコードは、特定のイベント(例:プレイヤーが新しいエリアに入ったとき)に呼び出すことで、自然なオーディオ環境の切り替えを実現します。


3. パラメータのExposeとスクリプト制御

3.1 Expose 'Volume (of SE)’ 機能

AudioMixer内の「Volume」パラメータをスクリプトから操作するため、まずは対象のスライダーを右クリックし「Expose 'Volume (of SE)’ to script」を選択してください。これにより、該当パラメータがスクリプトからアクセス可能な状態になります。

3.2 サンプルコード:特定パラメータの制御

以下は、SE(効果音)の音量をスクリプトで調整する例です。

using UnityEngine;
using UnityEngine.Audio;
using UnityEngine.UI;

public class SoundManager : MonoBehaviour
{
    public AudioMixer audioMixer; // Inspectorで設定
    public Slider seVolumeSlider; // UIスライダーの参照

    void Start()
    {
        // スライダーの値が変化したときにSetSEVolumeを呼び出す
        seVolumeSlider.onValueChanged.AddListener(SetSEVolume);
    }

    // SEのVolumeを設定するメソッド
    public void SetSEVolume(float volume)
    {
        // "SEVolume"はAudioMixer上で公開したパラメータ名
        audioMixer.SetFloat("SEVolume", volume);
    }
}

この例では、スライダーの値の変更に合わせて、AudioMixer内の"SEVolume"パラメータをリアルタイムに更新しています。音量は通常、デシベル単位(例:-80dB~0dB)で管理されます。


4. ダッキング(Ducking)

4.1 ダッキングの概要

ダッキングは、特定の音声や効果音を強調するために、他の音源(例:背景音楽)の音量を自動的に下げる技術です。多くの場合、サイドチェインコンプレッサーを用いて実現されます。

4.2 ダッキングの主要パラメータ

  • Side Chain(サイドチェイン)
    トリガーとなる音源(例:ダイアログや効果音)の音量に応じ、別の音源を制御します。
  • Threshold(閾値)
    ダッキングが発動するための音量レベル。トリガー音源がこのレベルを超えると、対象音源の音量が下がります。
  • Ratio(比率)
    閾値を超えた場合の音量の減衰具合。比率が大きいほど対象音源の音量は大きく下がります。
  • Attack and Release(アタックとリリース)
    • Attack: ダッキングが開始されるまでの時間
    • Release: ダッキングが解除されるまでの時間

4.3 Unityでのダッキング設定手順

  1. AudioMixerのグループ設定
    ダッキングを適用したいオーディオグループ(例:背景音楽グループ)を作成します。
  2. Sendエフェクトの追加
    トリガーとなるオーディオソース(例:効果音、ダイアログ)にSendエフェクトを追加し、対象グループに送出します。
  3. Duck Volumeエフェクトの設定
    背景音楽グループにDuck Volumeエフェクトを適用し、Sendエフェクトとの接続を行います。
  4. Threshold・Ratioの調整
    Duck Volumeエフェクト内で、閾値と減衰比率を設定し、意図する音量調整を行います。
  5. テストと微調整
    ゲームをプレイし、期待通りにダッキングが機能しているか確認し、必要に応じて調整します。

4.4 設定サンプル(ダッキングの効果例)

例えば、キャラクターが剣を振る際に背景音楽(BGM)が一時的に下がるような設定では、Duck VolumeエフェクトのRatioを極端(例:1000%)に設定することで、効果音が際立つように演出できます。これにより、重要な効果音がリスナーに強く印象付けられます。


5. まとめ

本資料では、Unity AudioMixerにおける以下の機能について解説しました。

  • スナップショット: 複数のオーディオ設定を保存し、シーンや状況に応じた切り替えが可能
  • トランジション: スナップショット間の滑らかな遷移を実現する各種オプション
  • Expose to script: AudioMixerパラメータをスクリプトから操作する仕組みとサンプルコード
  • ダッキング: 重要な音源を際立たせるための自動音量調整(Side Chain、Threshold、Ratio、Attack/Release の概念)

これらの機能を活用することで、ゲーム内のオーディオ体験をよりダイナミックかつ没入感のあるものにすることが可能です。各機能を実装・調整する際は、シーンやイベントに合わせた最適なパラメータ設定を検討してください。


設定サンプル

実行結果

極端な例になりますが、剣を振っている時、BGMのボリュームが下がっているのがわかります
Ratioを1000%にしています(最大限にBGMの音量が下がります)

Unity

Posted by hidepon