🔥
BGMをシームレスに切り替える
Sound1、Sound2にそれぞれAudioSouceコンポーネントを設定し、再生したいサウンドファイルを入れてはInspector上でどちらも「Play On Awake」を false にしてます。
Playメソッドを使って再生開始
2つのAudioSourceが常時再生されてるのは負荷的にアレだと思うので、せめてMixRateが 0 or 1 のときはもう一方のAudioSourceの再生を止めるべき
FrontBoundsObject.cs
using UnityEngine;
public class SwitchAudio : MonoBehaviour {
[SerializeField]
private AudioSource[] _audios;
/// <summary>
/// BGMの混ぜ具合。0ならSound1、1ならSound2になる
/// </summary>
[Range(0, 1)]
public float _mixRate = 0;
public void Play() {
_audios[0].Play();
_audios[1].Play();
}
private void Update () {
_audios[0].volume = 1f - _mixRate;
_audios[1].volume = _mixRate;
}
}
Discussion