Qemelly(けめる)のプログラム備忘録

Unity / AtCoderについて書きます

LucidAudioのStopに引数を入れるときの注意点

※追記(同日):以下の記事の通り、恐らくOnDestroyでStopを使うこと自体が誤りのようです。

qemelly.hatenablog.com

以下本文。

LucidAudioのStop()メソッドでは引数を取ってフェードアウトを演出することが出来ます。
しかし、次のような使い方は出来ません。

public class LucidAudioExample : MonoBehaviour
{
    [SerializeField] private AudioClip clip;

    private AudioPlayer _player;

    private void Start()
    {
        _player = LucidAudio.PlayBGM(clip);
    }

    private void OnDestroy()
    {
        _player.Stop(1.0f); // Error
        _player?.Stop(1.0f); // これもError
    }
}

Consoleのエラーを見てみると、Null参照になっています。

少し考えてみると分かることですが、フェードアウトしている間はLucidAudioが動いている必要があるので、OnDestroy時にそれを実行してもエラーになるというわけです。