객체 지향 특강 - 델리게이트

Amberjack·2024년 1월 25일
0

C# 문법

목록 보기
41/44

델리게이트

함수를 변수처럼 사용할 수 있다.

SpawnPlayer()를 예로 들어보자.
플레이어를 맵에 생성하는 함수 SpawnPlayer()가 있을 때, 방 A, B, BossRoom, RandomPlace처럼 방에 따라 생성하는 함수가 다르다고 가정해보자.
이때, 각자 함수를 만드는 것보다 델리게이트를 통해 함수를 변수처럼 사용할 수 있다.

delegate 반환형 델리게이트이름 (매개변수);

delegate void SpawnDelegateFunc();	// 1. 델리게이트 선언

void Start()
{
	SpawnDelegateFunc spawnAction;	// 2. 델리게이트 변수 만들기
    spawnAction = SpawnPlayer_ARoom;	// 4. 델리게이트 변수에 함수 저장

	InitStageData();
    SpawnPlayer();		// 5. 델리게이트 실행!
    SpawnMonster();
}

// 사용할 함수 만들기
void SpawnPlayer_ARoom(){...}	// 3. 위의 델리게이트를 선언한 것과 같은 반환형, 매개변수를 사용해야 한다.
void SpawnPlayer_BRoom(){...}
...

델리게이트에 여러 개의 함수를 넣고 싶을 때는
spawnAction += SpawnPlayer_ARoom; 과 같이 사용할 수 있다.

델리게이트를 굳이 사용하는 이유?? - 확장성 때문!

ex) 방이 수백개씩 된다면? →
팝업 창이 있을 경우, 팝업 창의 내용별로 함수를 따로 만들어야한다.

void PopupConfirm_QuitGame()
{
	// 팝업 창별 기능
}

void PopupConfirm_ChangeCharacter()
{

}
...

위임

필요한 기능을 별도로 구현하지 않고 전달받은 기능만 실행하도록. 여러 상황에 대응할 수 있도록 한다.

버튼 OnClick.AddListener()를 사용하면 버튼 클릭 시 실행할 함수를 연결해줄 수 있다.

0개의 댓글