- 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와 이벤트 시스템 등에서 자주 활용되는 방식이다!


- 테스트 결과

플레이어의 Turn차례가 오면 공격 또는 이동 ui가 표시된다!

+ Recent posts