UnityEventのリスナーは消せない?

UnityEngine.Events.UnityEventについてです。

このクラスを使うとInspectorからButtonのOnClickListenerみたいにメソッドを登録できます。

こんな感じの奴。

で、

一回だけ起動させたいなと思って、

_events?.Invoke()

みたいにしてEventを発動させた後に、

_events.RemoveAllListener()

を使ってみました。名前からして消えるんだろうなと思って。

しかし、呼び出しても消えず。

公式を見てみるとインスペクタから設定したイベントは永続的なものとして登録されて、消せないみたいです。

スクリプトから設定したもののみ消えるそうです。


そういうわけなんで、一回だけ呼び出すには

こんな感じでそのまま書くしかないのかも。

もしくは、

enterOnceEvent.SetPersistentListenerState(0,UnityEventCallState.Off);

こんな感じにオフにする機能もあるようです。