fall and fall

ゲーム、プログラミング、二次創作のことなどを書いています。

Unity オーディオの音量調節をする方法(Audio Mixer)

Unity の Audio Mixer を使って、オーディオの音量を調整する方法を書いていきます。

バージョン

  • Unity 2021.3.14f1(LTS)

1. Audio Mixer の追加

プロジェクトウィンドウのフォルダ(Assets など)を右クリックして、「作成」→「オーディオミキサー」を選択します。

オーディオミキサーが作成できたら、名前を「AudioMixer」に変更します。

2. グループの作成

追加したオーディオミキサーをダブルクリックして、オーディオミキサーのウィンドウを開きます。それから、グループの「+」をクリックして、BGM や SE などのグループを作成します。

3. Volume の公開

追加したグループを選択して、インスペクターのボリュームを右クリックして公開(Expose)します。

公開したら「Exposed Parameters」を開いて、パラメーターをダブルクリックして名前を「bgmVolume」などに変更します。

4. スクリプトの追加

ヒエラルキーウィンドウで空のオブジェクトを作成して、以下のスクリプトをアタッチします。

Audio.cs

using UnityEngine;
using UnityEngine.Audio;

public class Audio : MonoBehaviour {
  public AudioMixer mixer;
  public AudioSource[] bgm;
  private AudioSource playingBgm = null;
  internal void PlayBgm(int i) {
    if (playingBgm != null) {
      return;
    }
    playingBgm = bgm[i];
    playingBgm.Play();
  }
  internal void StopBgm() {
    if (playingBgm == null) {
      return;
    }
    playingBgm.Stop();
    playingBgm = null;
  }
  internal void SetBgmVolume(float decibel) {
    mixer.SetFloat("bgmVolume", decibel);
  }
}

AudioMixer の SetFloat メソッドで音量を設定することができます。第一引数は、先ほど公開したパラメーター名を指定します。

mixer.SetFloat("bgmVolume", decibel);

スクリプトをアタッチしたら、インスペクターでオーディオミキサーを設定します。

5. オーディオファイルの追加

再生するオーディオファイル(MP3など)をヒエラルキーウィンドウに追加して、インスペクターで以下の設定をします。

  • 出力をオーディオミキサーのグループに設定
  • ゲーム開始時に再生のチェックを外す

6. オーディオソースの設定

スクリプトのインスペクターを表示して、オーディオファイルのオブジェクトを設定します。

これで、スクリプトのメソッドを呼び出して再生や音量調節ができます。

補足. デシベルについて

音量の設定でデシベルを使いますが、Unity の場合は +20dB ~ -80dB(無音)が設定可能です。

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

デフォルトは 0dB になります。