UnityEngine.Events.UnityEventについてです。
このクラスを使うとInspectorからButtonのOnClickListenerみたいにメソッドを登録できます。
こんな感じの奴。


で、
一回だけ起動させたいなと思って、
_events?.Invoke()
みたいにしてEventを発動させた後に、
_events.RemoveAllListener()
を使ってみました。名前からして消えるんだろうなと思って。
しかし、呼び出しても消えず。
公式を見てみるとインスペクタから設定したイベントは永続的なものとして登録されて、消せないみたいです。
スクリプトから設定したもののみ消えるそうです。
そういうわけなんで、一回だけ呼び出すには
1 2 3 4 5 6 |
if (!isInvoked)//Eventが発動したか { //UnityEventのイベントはインスペクタから設定したものは消せないみたい enterOnceEvent?.Invoke(); isInvoked = true; } |
こんな感じでそのまま書くしかないのかも。
もしくは、
enterOnceEvent.SetPersistentListenerState(0,UnityEventCallState.Off);
こんな感じにオフにする機能もあるようです。