転職を繰り返したサラリーマンの多趣味ブログ

30才未経験でSEに転職した人の多趣味ブログ

unityroomに投稿したゲームのBGMとSEの制御方法

久しぶりにunityroomに投稿した以下ゲームより、メモとして残しておきたい部分を記しておきます。
unityroom.com

BGMとSEの制御について

BGMとSEは、1つのゲームオブジェクトにAudio Sourceコンポーネントを2つ追加して制御しています。
1つがBGM用、もう1つがSE用という感じで。

こうすることで、BGMのボリュームだけ大きくしたり、SEのボリュームを小さくしたりといったことが可能なので重宝しています。

制御に使っているスクリプトは、以下の通りです。

 [SerializeField] AudioSource audioSourceBGM;

 [SerializeField] AudioClip[] audioClipsBGM;

 [SerializeField] AudioSource audioSourceSE;

 [SerializeField] AudioClip[] audioClipsSE;

 public static SoundManager instance;

 private void Awake() {
        
     if (instance == null) {

            instance = this;

     }

}

void Start()
{
    audioSourceBGM.Stop();

    audioSourceBGM.clip = audioClipsBGM[0];
    audioSourceBGM.Play();

}

public void StopBGM() {

    audioSourceBGM.Stop();

}

public void PlaySE(int index) {

    audioSourceSE.PlayOneShot(audioClipsSE[index]);

}  

BGMとSEの音源を、配列として格納可能にしています。

今回作ったゲームでは、BGM音源を1つ、SE音源を3つセットしています。
スクリプトに戻りますと、BGM音源は1つだけなのでStart()メソッドで再生しています。
SE音源に関しては、PlaySE(int index)メソッドを作成し、外部クラスから再生できるようにしています。引数によって、3つあるうち任意のSE音源が再生可能です。