グラフィックは整った。動きも良い。でも遊んでみると、なぜか安っぽい——ボタンを押しても無音、攻撃が当たっても無音。ゲームの手応えの半分は、実は音が作って います。
Unityのオーディオは、3つの登場人物で覚えれば十分です。
- Audio Clip: 音声ファイルそのもの(.wav・.mp3・.oggなど)
- Audio Source: 音を鳴らすスピーカー(シーン内に何個でも)
- Audio Listener: 音を聞くマイク(シーンに1つだけ・通常はメインカメラに最初から付いています)
この記事でわかること
- オーディオの3要素——Clip・Source(スピーカー)・Listener(マイク)
- BGMのループ再生とSEの定石(
PlayOneShot)- Spatial Blend——2Dサウンドと3Dサウンドの使い分け
- Audio Mixerで「BGM音量」「SE音量」のスライダーを作る入口
- 実践:背後から迫る敵の足音を組む

BGM(背景音楽)の再生
BGMは「シーン開始と同時に鳴り始めて、ループし続ける」が基本形です。スクリプトは不要です。
- 空のGameObjectを作成し、「BGMManager」などと名付けます。
Audio Sourceコンポーネントを追加し、以下を設定します。
| プロパティ | 設定 | 意味 |
|---|---|---|
| AudioClip | BGMのファイル | 再生する曲 |
| Play On Awake | オン | シーン開始と同時に再生 |
| Loop | オン | 曲の終わりで最初に戻る |
| Spatial Blend | 0(2D) | どこにいても同 じ音量で聞こえる |
tips シーンをまたいでBGMを流し続けたい場合は、DontDestroyOnLoad と組み合わせます。「シーン遷移のたびにBGMが頭から鳴り直す」問題の定番解です。
SE(効果音)の再生
SEは「イベントが起きた瞬間に1回だけ鳴る」音です。定石は PlayOneShot() ——現在再生中の音を止めずに重ねて再生できるため、連打・連続ヒットでも音が途切れません。

- SEを鳴らしたいオブジェクトに
Audio Sourceを追加し、Play On AwakeとLoopをオフにします。 - スクリプトから
PlayOneShot()を呼びます。
using UnityEngine;
[RequireComponent(typeof(AudioSource))]
public class PlayerAudio : MonoBehaviour
{
public AudioClip jumpSound;
public AudioClip hitSound;
private AudioSource audioSource;
void Awake()
{
audioSource = GetComponent<AudioSource>();
}
public void PlayJump()
{
// 第2引数で個別に音量を調整できる
audioSource.PlayOneShot(jumpSound, 0.8f);
}
public void PlayHit()
{
audioSource.PlayOneShot(hitSound);
}
}
その場に音を残したいとき——PlayClipAtPoint
「爆発した敵は消えるが、爆発音はその場所で鳴り続けてほしい」——音源のオブジェクトが消えてしまう場合は、標準の静的メソッドAudioSource.PlayClipAtPoint()が便利です。
void OnDestroyed()
{
// 指定位置に一時的なAudioSourceを自動生成して再生し、終わったら自動で消える
AudioSource.PlayClipAtPoint(explosionSound, transform.position);
Destroy(gameObject);
}
内部では一時的なGameObjectの生成・破棄が起きるため、毎フレーム級の高頻度SEには向きません(その場合は プール したAudio Sourceを使います)。「たまに鳴る、その場に残したい音」用と覚えてください。
3DサウンドとSpatial Blend
Audio Sourceの Spatial Blend は、「音に位置があるか」を決めるスライダーです。

- 0(2D): カメラの位置に関係なく、常に同じ音量・同じバランスで聞こえます。BGM・UI音に。
- 1(3D): 音がシーン内の
Audio Sourceの位置から発生しているように聞こえます。近づけば大きく、遠ざかれば小さく、左にあれば左から。敵の足音・爆発・環境音に。
使い分けの判断基準は1行です。 「その音に『場所』があるなら3D、ないなら2D」。3D側はMin Distance/Max DistanceとVolume Rolloffカーブで、「どこまで届く音か」を調整できます。
ここで1つ、誤解しやすい仕様があります。デフォルトの Logarithmic Rolloffでは、Max Distanceは「無音になる距離」ではなく「減衰が止まる距離」 です。Max Distanceを越えても、小さくなった音量のまま聞こえ続けます。一方 Linear RolloffはMax Distanceでちょうど音量0 になります。「一定距離で完全に聞こえなくしたい」ならLinearかカスタムカーブを選びましょう。Sceneで音源の周りを実際に歩いて、2つのRolloffの聞こえ方を比べてみるのがいちばん早い理解法です。
Audio Mixer——音量設定の土台
設定画面の「BGM音量」「SE音量」スライダーは、Audio Mixerで作るのが定石です。

- 「Window > Audio > Audio Mixer」でミキサーを作成し、
BGMとSEのグループを追加します。 - 各
Audio SourceのOutputに対応するグループを設定します。これで音が「BGM系統」「SE系統」に分かれて流れます。 - グループのVolumeを右クリック →「Expose」でスクリプトから操作可能にし、
audioMixer.SetFloat("BGMVolume", dB値)で変更します。
tips ミキサーの音量はデシベル(-80〜0) で、スライダーの0〜1をそのまま渡すと正しく効きません。
Mathf.Log10(value) * 20で変換するのが定番イディオムです。音量スライダーの保存とUIの組み立ては PlayerPrefs入門の実践 が丸ごと1本の題材にしています。
実践:背後から迫る敵の足音を組む
ステルスゲームで背後から近づく警備兵、ホラーで廊下の向こうから迫る何か、サバイバルで夜の闇をうろつく獣—— 「見えないけれど、音で分かる」 は3Dサウンドの独壇場です。この記事の部品(3D設定+PlayOneShot+ピッチランダム化)だけで組めます。
