LucidAudioをOnDestroyで止めたい場合はSetLinkを使おう
基本的にOnDestroyで止める方法は危険っぽいです。何回か以下のようなエラーが発生し、その次のPlayMode実行時に音が鳴らなくなりました。
Error: Some objects were not cleaned up when closing the scene. (Did you spawn new GameObjects from OnDestroy?)
PlayMode実行時にLucidAudioオブジェクトがDontDestroyOnLoadに入っていないことから、LucidAudioオブジェクトの破棄に失敗しているものと考えられます。
失敗例
public class 良くない例 : MonoBehaviour { [SerializeField] private AudioClip clip; private AudioPlayer _player; private void Start() { _player = LucidAudio.PlayBGM(clip).SetLoop(); } private void OnDestroy() { _player?.Stop(); // LucidAudioが適切に破棄されない場合がある } }
解決策
SetLinkを利用してMonoBehaviourのライフサイクルと紐づけましょう。
public class 多分こっちの方がいい : MonoBehaviour { [SerializeField] private AudioClip clip; private void Start() { LucidAudio.PlayBGM(clip).SetLoop().SetLink(gameObject); } }