프로젝트/Unity

[Unity Tip] Action 이해하기

dokwang82 2025. 4. 20. 23:50

요즘 세상이 하루가 다르게 변하는 걸 느껴

AI로 인해 생산성이 5배이상 증가한 느낌이야

오늘은 유니티에서 Action에 대해 이야기 해 볼까해

일단 나는 GPT랑 Claude한테 배우고 있어

앱을 개발하고 있는데 모든 씬에서 팝업다이얼로그를 프리팹화해 메세지를 출력하려고 하다가 Action을 본거야

간단하게 말하면 Action은 메소드를 변수처럼 사용하게 해주는 거야.

그럼 혹자는 메소드를 그냥 사용하면 안되라고 말할 수도 있어.

문제는 사용하는게 문제가 아니라 메소드를 전달하려면 Action으로 Wrapping을 해야하기때문이야  Action을 사용하려면 Acton이름 뒤에 ?.Invoke()를 붙이면 실행이 돼

 

액션을 전역 변수로 선언하고

private Action onConfirmAction; 

 

액션은 인수로 받는 메소드를 만들어 인수로 받은 액션은 onConfirmAction 전역 변수에 저장이 되지

public void ShowDialog(string message, Action onConfirm)
    {
        if (dialogUI == null) SetupDialog();

        dialogUI.SetActive(true);
        messageText.text = message;
        onConfirmAction = onConfirm;
    }

 

인스터스로 만들어진 메소드는 어떤 액션을 할지만 정해 놓고 

DialogManager.Instance.ShowDialog("다음 씬으로 이동할까요?", () =>
{
    SceneManager.LoadScene("NextScene");
});

 

실제는 버튼 함수가 실행이 되면 마지막에 onConfirmActon?.Invoke()로 Action에 저장된 메소드가 실행이 되는 거야

public void OnConfirmButton()
 {
      dialogUI.SetActive(false);
      onConfirmAction?.Invoke();
}