- Delegate란?
메서드를 가리키는 포인터로 이해하면 쉽다.
다시말해 델리게이트는 특정 함수를(메서드를) 변수처럼 다룰 수 있게 해준다!
- 공격 또는 이동 UI 표시 예제
// UI 표시 메서드
public void ShowActionUI(System.Action attackCallback, System.Action moveCallback)
{
actionPanel.SetActive(true);
onAttackSelected = attackCallback;
onMoveSelected = moveCallback;
}
// ui 숨김 메서드
public void HideActionUI()
{
actionPanel.SetActive(false);
}
public void OnAttackPressed()
{
onAttackSelected?.Invoke();
HideActionUI();
}
public void OnMovePressed()
{
onMoveSelected?.Invoke();
HideActionUI();
}
게임 개발을 하면서 델리게이트를 사용해본 예시이다.
턴제 게임에서 캐릭터의 차례가 오면 이제 무엇을 할건지 UI가 표시된다.
두 개의 콜백 함수(attackCallback, moveCallback)를 파라미터로 받고,
이 파라미터들은 Action 델리게이트 타입이기 때문에, 반환값이 없는 메서드를 참조한다는 것!
// UI 호출 예시
ShowActionUI(Attack, Move); // 공격과 이동의 메서드를 전달
공격할 것인지? 아님 이동할 것인지?를 호출하기에 플레이어가 공격 또는 이동을 택할 수 있는 것이다!
델리게이트(Delegate)는
메서드를 동적으로 변경할 수 있기 때문에, 게임에선 UI와 이벤트 시스템 등에서 자주 활용되는 방식이다!
- 테스트 결과
'Unity > Unity 프로그래밍' 카테고리의 다른 글
[C#/Unity] try-catch를 이용해 개발 진행하기 (0) | 2025.03.25 |
---|---|
[C#/Unity] Builder 패턴을 이용해서 캐릭터 기술 만들기! (0) | 2025.03.24 |
[Unity/프로그래밍] enum 연습: 플레이어 상태에 따라 행동 결정하기 (0) | 2025.03.22 |
[Unity] 유니티의 생명주기(Lifecycle)와 코루틴 (0) | 2025.02.05 |
[Unity] 충돌 시스템을 활용한 범위 내(입장 시) 이벤트 실행하기 (0) | 2025.02.05 |