Action이란?
Action은 매개 변수와 반환 값이 없는 메서드를 나타내는 대리자 유형입니다. 주로 런타임(게임이 실행되는 동안)에 구독하고 발동시킬 수 있는 이벤트를 만드는 데 사용됩니다.
다음은 예시입니다.
public class Button : MonoBehaviour
{
public Action onClick;
private void OnMouseDown()
{
if (onClick != null) { onClick.Invoke(); }
}
}
public class GameController : MonoBehaviour {
private void Start() {
// Get reference to MyButton component
Button Button = FindObjectOfType<Button>();
// Subscribe to onClick event
Button.onClick += HandleButtonClick;
}
private void HandleButtonClick() {
Debug.Log("Button clicked!");
}
}
'onClick' 변수는 버튼을 클릭할 때 발생해야 하는 작업을 실행할 수 있게 해주는 트리거 같은 존재입니다. 버튼을 누르면 OnMouseDown 메서드는 onClick이 설정되었는지 확인하고 설정되어 있으면 작업을 호출합니다.
.GameController 스크립트에서 Button에 HandleButtonClick 함수를 등록하는 것을 볼 수 있습니다!
event Action이란?
event 키워드를 붙이지 않고 Action을 선언할 경우 다른 클래스에서 Action을 실행할 수 있게 됩니다.
반대로 event 키워드를 붙이면 Action을 선언한 클래스 내부에서만 사용할 수 있게 됩니다.
event 키워드를 사용하게 되면 컴파일러에게 다른 클래스에서 이 Action을 사용하지 마라! 라는 것을 명시적으로 알려줍니다!