콜백이란 무엇인가
콜백(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();
}