この記事について
UnityでのBGMや効果音(SE)の扱い方を解説します。AudioSourceとAudioClipの基本から、音量調整やループ設定、フェード処理まで、ゲームに欠かせないサウンド演出をまとめました。さらに、複数の効果音を効率よく管理する方法やパフォーマンス最適化のポイントも紹介します。
この記事でわかること
- BGM・SEの基本的な再生方法(AudioSource / AudioClip)
- 音量の変更・ループ設定・フェード処理
- 効果音をスクリプトで制御する方法
- サウンド管理の最適化(オーディオプール・負荷軽減)
AudioSourceとは?
Unityの AudioSource とは、ゲーム内で音を再生するためのコンポーネントです。
スピーカーの役割を持っていて、音声データ(AudioClip)を実際に「鳴らす」機能を担当します。たとえばBGM、効果音、環境音などを流したいときは、AudioSourceをGameObjectにアタッチして使います。
主な特徴
- AudioClipを指定して再生
AudioSourceにAudioClipを割り当てると、その音声を再生できます。スクリプトから動的に差し替えることも可能です。 - ループ再生
BGMのように同じ音を繰り返したい場合は loop をオンにするだけでループ再生されます。 - 音量・ピッチ調整
volume で音量、pitch で再生速度や高さを変えることができます。 - 3Dサウンド
空間に配置して、リスナー(通常はカメラ)の位置によって音の聞こえ方が変わるようにできます。距離による減衰やステレオのパン効果も適用されます。
UnityのAudioSourceの使い方
AudioSourceとAudioClipの関係
Unityでは、AudioSource(音を再生する)とAudioClip(音のデータ)を組み合わせてサウンドを管理します。
➡ AudioClipはAssets/Audio/などに保存!(フォルダは作成しましょう)
➡ AudioSource にAudioClipを追加してサウンドを再生!
項目 | 役割 |
---|---|
Audio Source | 音を再生・停止・ループするコンポーネント |
AudioClip | 音のデータ(WAV、MP3、OGGなど) |
AudioSourceの追加方法
① Hierarchy から追加
・ [Hierarchie] → [右クリック] → [Audio] → [Audio Source] を選択
・ AudioSourceオブジェクトがシーンに追加される
AudioSourceの構成要素(ミュート、ループ、音量・音程)

設定項目 | 説明 | 主な用途 |
---|---|---|
AudioClip (Audio Resource) | 再生する音声ファイル(WAV, MP3, OGG など)を設定 | 効果音やBGMの割り当て |
Output | Audio Mixer(音量やエフェクトを一括管理する仕組み)に接続 | 複数の音をグループで制御したいとき |
Mute | サウンドを一時的に消音する | 特定の条件で音を無効化 |
Bypass Effects | Audio Mixer のエフェクト(リバーブやEQなど)を無効化する | 特定の音だけエフェクトを外したいとき |
Bypass Listener Effects | Audio Listener 側に適用される効果を無効化する | 特殊な演出でリスナー影響を受けたくないとき |
Bypass Reverb Zones | Reverb Zone(環境リバーブ)の影響を無効化する | リバーブを適用しない音を作りたいとき |
Play On Awake | シーン開始時に自動で再生する | ゲーム開始時にBGMを流すとき |
Loop | チェックを入れると繰り返し再生する | BGMや環境音に利用 |
Priority | 音の優先度(0=最優先、256=最低) | 多数の音が鳴る場合、優先度の高い音を残す |
Volume | 音量を調整(0.0~1.0) | 音の大きさを制御 |
Pitch | 再生速度・音程を調整(0.1~3.0) | 高音・低音やスロー/早回し再生 |
Stereo Pan | -1(左)~+1(右)で音の定位を設定 | ステレオ音声で方向を付けたいとき |
Spatial Blend | 0=2D、1=3Dとして扱う割合を調整 | 2Dゲームなら0、3Dゲームなら1推奨 |
Reverb Zone Mix | リバーブゾーンの影響度(0~1.1) | 洞窟やホールの音響効果を強調 |
Doppler Level | 移動による音の変化(ドップラー効果)を適用 | 車や飛行機など動きの速い音にリアルさを追加 |
Spread | ステレオの広がり(0~360度)を調整 | 音の拡がり感を制御 |
Volume Rolloff | 距離による音量減衰カーブを選択(Logarithmic / Linear / Custom) | 3D音の減衰方法を制御 |
Min Distance | この距離までは音量が最大のままになる | 近距離での音量維持 |
Max Distance | この距離を超えると音が聞こえなくなる | 音が届く範囲を制御 |
AudioSourceのスクリプト制御
BGMを再生・停止・一時停止・再開
➡スクリプトで制御すれば、BGMの切り替えが簡単に!
※ AudioSourceのAudio ResourceにAudioClipをアタッチしてください
using UnityEngine;
public class BGMExample : MonoBehaviour
{
public AudioSource audioSource;
//BGMを開始
void BGMStart()
{
audioSource.Play();
}
//BGMを停止
void BGMStop()
{
audioSource.Stop();
}
//BGMを一時停止
void BGMPause()
{
audioSource.Pause();
}
//BGMを再開
void BGMUnPause()
{
audioSource.UnPause();
}
}
SE(効果音)を再生
効果音をスクリプトで再生
効果音には「PlayOneShot()」を使うと、他の音と重ねて再生可能!
public AudioSource audioSource;
public AudioClip jumpSE;
void Update()
{
//「Space」キーを押すとSEが流れる
if (Input.GetKeyDown(KeyCode.Space))
{
audioSource.PlayOneShot(jumpSE);
}
}
AudioMixerでマスター・BGM・SE音量を管理
Unityではグループ毎の音量をまとめて管理できる機能があります。AudioMixerについては以下の記事を参考にしてください。
BGMのフェードイン・フェードアウト
フェードイン
最初に音量0から、徐々にBGMを再生します!
IEnumerator FadeInBGM(AudioSource source, float duration)
{
float time = 0;
while (time < duration)
{
source.volume = Mathf.Lerp(0, 1, time / duration);
time += Time.deltaTime;
yield return null;
}
source.volume = 1;
}
フェードアウト
BGMをスムーズに演出に最適!
IEnumerator FadeOutBGM(AudioSource source, float duration)
{
float time = 0;
float startVolume = source.volume;
while (time < duration)
{
source.volume = Mathf.Lerp(startVolume, 0, time / duration);
time += Time.deltaTime;
yield return null;
}
source.Stop();
source.volume = startVolume;
}
サウンドの最適化
音声ファイルの圧縮
・ MP3 / OGGを使うとファイルサイズを削減できる!
・ WAVは高いですが、サイズが大きいので注意してください!
AudioSourceを減らしてパフォーマンス向上
・ BGM用はAudioSource1つだけする!
・ SEはPlayOneShot()使って複数再生!
サウンドオブジェクトをプールする
Instantiate()/Destroy()は負荷が大きいため、オブジェクトプールを活用します。
※ この方法は有効性が不明なため参考程度にお願いします。
➡ オブジェクトプールを活用すると、サウンド再生の負荷を軽減できる!
using System.Collections.Generic;
using UnityEngine;
public class AudioPool : MonoBehaviour
{
public AudioSource audioPrefab;
private Queue<AudioSource> pool = new Queue<AudioSource>();
public AudioSource GetAudioSource()
{
if (pool.Count > 0)
{
AudioSource source = pool.Dequeue();
source.gameObject.SetActive(true);
return source;
}
return Instantiate(audioPrefab);
}
public void ReturnAudioSource(AudioSource source)
{
source.gameObject.SetActive(false);
pool.Enqueue(source);
}
}
まとめ
・ AudioSource+AudioClipを使えば簡単にBGMやSEを再生できる!
・ BGMはloop = true、SEはPlayOneShot()を活用!
・フェード処理を実現すれば、スムーズなBGM切り替えが可能!
・オーディオの最適化(ファイル圧縮・プーリング)で負荷を軽減!