UnityActionをInspectorで登録
UnityEngine.UI.Buttonみたいの、Inspectorで登録できるようにしたい。でも、そのままUnityActionを↓のように記述しても、Inspectorには表示されません。
public UnityAction voidAction
そんなときは、UnityEvent
↓のように記述してみましょう。public UnityEvent unityEvent = new UnityEvent();Inspectorに表示されます!
こんな感じ |
KindleのUnity本一覧
というわけで、コード例
処理を登録する
もちろん、Inspector以外からも登録できますunityEvent.AddListener(voidAction);
ラムダ式でもいけちゃいます
unityEvent.AddListener(() => Debug.Log("unityEvent"));
指定した処理の削除
unityEvent.RemoveListener(voidAction);
全処理の削除
unityEvent.RemoveAllListeners();
処理の実行
unityEvent.Invoke();
こんな場合、どうなる?
同じ処理を複数登録して、1回削除した場合・・・unityEvent.AddListener(voidAction);これは、登録した処理が全部削除されてなにも実行しなくなります。
unityEvent.AddListener(voidAction);
unityEvent.RemoveListener(voidAction);
unityEvent.Invoke();
なので、同じ処理はまとめて削除されるようですね。
0 件のコメント :
コメントを投稿