Unityの音声関連のコンポーネント
AudioSource
プレイヤーの声や、足音、BGMなど、音を鳴らすためのコンポーネント。シーン内に複数存在することができる。
たとえば、あるキャラクターが3種類のセリフを持っている場合に、話しかけるたびにランダムで1つのセリフを再生するようにするには、3つのAudioClipを話しかけるたびにランダムで選択し、それを再生するようにするといった使い方をする。
using UnityEngine;
public AudioSource audioSource;
public AudioClip[] audioClipCache;
audioSource.clip = audioClipCache[0]; // 1つ目のセリフを再生
audioSource.Play();
AudioClip
にはOutput
というプロパティがあり、AudioMixerGroup
を指定することができる。これにより、BGMや効果音などを別々のグループに分けて音量を調整することができる。
AudioListener
プレイヤーの耳の役割をするコンポーネントで、シーン内に1つだけ存在する。たいていの場合、カメラにアタッチされている。
AudioSource
が3Dサウンドの場合、AudioListener
からの距離に応じて音量が変わる。
特にスクリプトから操作することはなく、コンポーネントとして存在するだけでよい。
AudioMixer
AudioMixer
は、AudioSource
の出力をグループ化して、それぞれのグループに対して音量やエフェクトを調整するためのコンポーネント。
たとえば、BGM
とSE
という2つのグループがあったとき、次のようにするとBGM
の音量だけを聞こえなくすることができる。
AudioMixerのパラメーターを操作するには、AudioMixer.SetFloat
を使う。単位はデシベルなのSlider
コンポーネントと連動させる場合は、Mathf.Log10
を使うとよい。
using UnityEngine.Audio;
public AudioMixer audioMixer;
public void SetBGMVolume(float volume)
{
volume = Mathf.Clamp01(volume);
float decibel = 20f * Mathf.Log10(volume);
decibel = Mathf.Clamp(decibel, -80f, 0f);
audioMixer.SetFloat("BGM", decibel);
}