-
Unity | 델리게이트(Delegate)다시한번 개발자도전! 2026. 2. 24. 17:00
1. 델리게이트란?
델리게이트는 말 그대로 '대리인'/
- 보통 함수를 호출할 때는 함수이름()을 직접 부르지만,
- 델리게이트를 사용시 "나 대신 이 함수들을 실행해줘"라고 대리인에게 명단을 넘겨주는 것과 같음.
- 델리게이트는 메서드의주소(참조)를 저장하는 변수임. 즉, 함수를 변수처럼 주고받을 수 있게 해줌.
2. 델리게이트의 특징
- 느슨한 결합 (Loose Coupling): 클래스 A가 클래스 B의 함수를 직접 알 필요 없이, 델리게이트만 호출하면 됨.
- 개방-폐쇄 원칙 (OCP): 기존 코드를 수정하지 않고도 새로운 기능을 델리게이트 명단에 추가하는 것만으로 기능을 확장할 수 있음.
- 이벤트 기반 프로그래밍: 스킬 쿨타임 종료, 아이템 획득 등 "사건"이 터졌을 때 알림을 보내는 용도로 최적임.
3. 델리게이트 사용법 3단계
1: 선언
어떤 형태의 함수(리턴 타입, 파라미터)를 담을지 정함.
// "리턴이 없고 string 인자를 하나 받는 함수"들을 담는 대리인 선언 public delegate void MyDelegate(string message); //실제로 사용할 변수를 만듦. MyDelegate talker;2: 등록 및 호출
함수를 연결하고 실행함.
void Start() { talker = SayHello; // 함수 등록 talker += SayBye; // 함수 추가 등록 (멀티캐스트) talker("반가워!"); // 대리인 호출 (등록된 모든 함수 실행) } void SayHello(string msg) => Debug.Log("안녕: " + msg); void SayBye(string msg) => Debug.Log("잘가: " + msg);
4. 액션(Action)과 펑션(Func)
1 : 액션
리턴값이 없는 델리게이트.
// 1. 델리게이트(Action) 선언 public Action<int> onGoldChanged; void Start() { onGoldChanged += UpdateGoldUI; // 3. 실행 (Invoke) onGoldChanged?.Invoke(100); } // Action<int>와 형식이 똑같은 메서드를 만듦 void UpdateGoldUI(int goldAmount) { Debug.Log($"{goldAmount} 골드를 획득."); }2 : 펑션(Func)
리턴값이 있는 델리게이트
// <입력, 리턴> 타입의 Func 선언 public Func<int, int> onDouble; void Start() { onDouble += GetDouble; // 실행 후 결과 받기 int result = onDouble(10); Debug.Log($"결과값: {result}"); // 20 출력 } // Func<int, int>와 형식이 똑같은 메서드 int GetDouble(int number) { return number * 2; }'다시한번 개발자도전!' 카테고리의 다른 글
Unity | 람다식(Lambda Expression) (0) 2026.03.03 Unity | 델리게이트를(delegate) 활용한 이벤트(Event System) (0) 2026.02.25 Unity | 유한상태머신(FSM, Finite State Machine)과 상태패턴(State Pattern) (0) 2026.02.23 Unity | BFS(너비우선 탐색) 와 DFS(깊이우선 탐색) (0) 2026.02.11 Unity | 타일맵(TileMap)과 룰타일(RullTile) (0) 2026.02.02