방프리

22.01.16 UnityEvent에 대한 고찰? 본문

GameEngine/UnityEngine

22.01.16 UnityEvent에 대한 고찰?

방프리 2022. 1. 16. 16:05

Unity의 UI를 살펴보면 상호작용에 대한 모든 것들이 UnityEvent로 이루어져있는걸 알 수 있다.

이를 통해서 UI의 커스터 마이징이 가능하며 여러 이벤트를 Listener에 등록하여 실행 시킬 수도 있다.

또한 최대 4개의 Generic 인수를 포함하는 UnityEvent를 선언할 수도 있다.

public UnityEvent _unityEvent;
public UnityEvent<T1> _unityEvent1;
public UnityEvent<T1, T2> _unityEvent2;
public UnityEvent<T1, T2, T3> _unityEvent3;
public UnityEvent<T1, T2, T3, T4> _unityEvent4;

인자가 포함된 UnityEvent도 하단과 같이 커스터마이징이 가능하다.

[SerializeField]
public class BoolEvent : UnityEvent<bool>
{
}

[SerializeField]
public class StringEvent : UnityEvent<string>
{
}

public BoolEvent _boolEvent;
public StringEvent _stringEvent;

이로써 Inspector 창에서 Event를 등록할 수 있고, 매개변수도 전달이 가능한 UnityEvent를 생성할 수 있다.

* 참고로 이 기능의 경우에 Unity 2020.3.24f1 LTS에서 확인하였다. 모든 버전을 체크하진 못하였으나 2019 버전에서 UnityEvent에 Parameter를 전달할 경우 (위의 BoolEvent, StringEvent처럼 선언 시) Inspector 창에서 보이지 않는 버그가 있다.

Comments