この記事について
この記事では、UnityのAudioMixerを使って マスター・BGM・SE音量を個別に調整する方法 を解説します。AudioSource単体での音量調整と違い、AudioMixerを使うとグループごとにまとめて管理できるため、音量調整やエフェクト適用が効率的になります。ここでは、AudioMixerの基本的な仕組みから設定手順、スクリプトによる制御方法までを一通り紹介します。
この記事でわかること
- AudioMixerの基本と仕組み
- マスター・BGM・SE用のグループ作成方法
- スクリプトから音量を変更する方法
AudioSourceとは?
この記事に入る前にAudioSourceについて学んでいない方は以下を参考にしてください。
AudioMixerとは?
AudioMixerは、Unityで複数の音声をグループごとに管理できる機能です。BGMやSEをそれぞれのグループに振り分けておけば、まとめて音量を変更したり、エフェクトをかけたりできます。
特に マスター音量(全体)・BGM音量・SE音量 を独立して管理できる点が便利です。
AudioMixerの設定手順
AudioMixerを作成する
Projectビューで「右クリック」→「Create」→「Audio Mixer」を選択。

グループを作成する
- 作成したAudioMixerを左ダブルクリックして開く。
- 「Groups」に「Master」があり、右クリックもしくは「+」ボタンから「Create Child Group」で BGM と SE を追加。

AudioSourceと紐付ける
- Hierarchy上の「Audio_BGM」を選択し、InspectorでAudioSourceの「Output」に「BGM」グループを指定。(Audio Resouceは設定しておく)
- Hierarchy上の「Audio_SE」を選択し、InspectorでAudioSourceの「Output」に「SE」グループを指定。(Audio Resouceは設定しておく)


音量パラメータを公開する
- AudioMixerウィンドウで「BGM」グループの「Volume」を右クリック。
- 「Expose to ** script」を選択する。
- AudioMixerの「Exposed Parameters」を開き、「BGM_Volume」という名前をつける。
- SEも同じように 「SE_Volume」、マスターは「Master_Volume」 とする。


スクリプトで音量を変更する
ここまで出来たらスクリプトで制御してみましょう。本来はSliderを用いて可変にしたいですが、今回はupdateとインスペクターで行っていきます。
スクリプトを作成し、それぞれアタッチしてください。
using UnityEngine;
using UnityEngine.Audio;
public class AudioMixer_Script : MonoBehaviour
{
[SerializeField] private AudioMixer audioMixer;
[SerializeField] private AudioSource BGMSource;
[SerializeField] private AudioSource SESource;
[SerializeField] private AudioClip SE;
[SerializeField] private float masterVolume;
[SerializeField] private float BGMVolume;
[SerializeField] private float SEVolume;
public void Update()
{
SetMasterVolume(masterVolume);
SetBGMVolume(BGMVolume);
SetSEVolume(SEVolume);
}
// マスター音量
public void SetMasterVolume(float volume)
{
if (volume <= 0f)
{
audioMixer.SetFloat("Master_Volume", -80f); // 無音扱い
}
else
{
audioMixer.SetFloat("Master_Volume", Mathf.Log10(volume) * 20);
}
}
// BGM音量
public void SetBGMVolume(float volume)
{
if (volume <= 0f)
{
audioMixer.SetFloat("BGM_Volume", -80f); // 無音扱い
}
else
{
audioMixer.SetFloat("BGM_Volume", Mathf.Log10(volume) * 20);
}
}
// SE音量
public void SetSEVolume(float volume)
{
if (volume <= 0f)
{
audioMixer.SetFloat("SE_Volume", -80f); // 無音扱い
}
else
{
audioMixer.SetFloat("SE_Volume", Mathf.Log10(volume) * 20);
}
}
//BGMを開始
public void BGMStart()
{
BGMSource.Play();
}
//SEを開始
public void SEShot()
{
SESource.PlayOneShot(SE);
}
}
実行してインスペクターで「masterVolume」、「BGMVolume」、「SEVolume」を変更するとそれぞれMaster音量、BGM音量、SE音量になっているのがわかるかと思います。

ポイント
- SetFloat で指定する名前は Exposeしたときのパラメータ名。
- Volumeは0.0~1.0のスライダーを想定し、デシベル(dB)に変換するため「Mathf.Log10(volume) * 20」を使う。
- 1.0 → 0dB(通常)
- 0.5 → -6dB
- 0.0 → -80(無音)
まとめ
- AudioMixerを使えばマスター・BGM・SEの音量を個別に調整可能。
- パラメータをExposeしてスクリプトから制御できる。
- スライダーと連動させることでプレイヤーが自由に音量を調整可能になる。