유니티 event Action

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을 사용하지 마라! 라는 것을 명시적으로 알려줍니다!