카테고리 없음

20250509 TIL 대리자 event back to the basic

note4973 2025. 5. 9. 21:11

콜백이란 무엇인가

콜백(Callback)은 어떤 작업이 끝난 후 실행될 함수를 미리 전달해 두고, 작업이 끝났을 때 나중에 호출하는 프로그래밍 패턴입니다.
주로 비동기 처리, 이벤트 처리, 로직 분리 등에 사용됩니다.

예시

  • 유니티에서 StartCoroutine 과 함께 콜백 메서드 전달
    예) 플레이어 턴이 끝난 뒤 다음 턴을 시작하는 콜백 처리
  • UI 버튼 클릭 이벤트에 메서드를 전달해서 호출
void DoSomething(System.Action callback)
{
    Debug.Log("작업 수행 중...");
    callback?.Invoke();
}

DoSomething(() => Debug.Log("작업 완료 후 콜백 실행"));

델리게이트(delegate; 대리자)란 무엇인가

델리게이트는 메서드 참조를 저장할 수 있는 타입입니다.
변수처럼 메서드를 전달, 저장, 호출할 수 있어
콜백, 이벤트, 전략 패턴 구현에 많이 사용됩니다.

특징

  • 메서드 시그니처를 기반으로 동작
  • 여러 메서드 연결 가능 (Multicast Delegate)
  • 안전하게 메서드 호출 가능
public delegate void MyDelegate(string message);

void PrintMessage(string msg)
{
    Debug.Log(msg);
}

MyDelegate del = PrintMessage;
del("델리게이트 호출 성공");

C#의 event란 무엇인가

**이벤트(event)**는 델리게이트를 기반으로 동작하며,
발생-구독 구조로 외부에서 구독한 메서드들을
자동 호출할 수 있도록 도와주는 안전한 델리게이트 래퍼입니다.

✅ 특징

  • 외부에서 직접 호출 불가, 구독/해제만 가능
  • 이벤트 중심 설계에 적합 (Observer Pattern)
  • GUI, 게임, 네트워크, 입력 처리에 자주 사용
public event Action OnPlayerDied;

void Die()
{
    Debug.Log("플레이어 사망");
    OnPlayerDied?.Invoke();
}