inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

유니티(Unity)로 시작하는 게임개발: Part 3. 슈팅게임 개발

게임상에서 팝업 UI 구현 2

Delegate를 옮길때

161

Hyobin Kim

작성한 질문수 81

0

GameData.cs에다가 public delegate void OnClicked();를 옮길때, 제가 실수로 Util 클래스 안에다가 넣어버렸습니다

그랬더니, 아래 함수에서 

"            popUp.SetListenerYes(onClickYes);

            popUp.SetListenerNo(onClickNo);"

이 부분에서 onClickNo라고 되어 있는 부분에서 오류가 납니다

위의 Argument 자리에서는 괜찮은데 왜 아래서 오류가 생기는 건지 이해가 안갑니다

오류는 이러합니다 "        public delegate void OnClicked();

"

        public static void CreatePopUp(GameObject prefab, GameObject parent, OnClicked onClickYes, OnClicked onClickNo, int id)
        {
            GameObject GO_PopUp = GameObject.Instantiate<GameObject>(prefab, parent.transform, false);
            PopUp popUp = GO_PopUp.GetComponent<PopUp>();

            popUp.SetListenerYes(onClickYes);
            popUp.SetListenerNo(onClickNo);

            popUp.Text_PopUpContent.text = string.Format("Do you want to buy {0}", GameDataManager.instance.ships[id].name);
        }

unity C#

답변 1

0

UDevApp

안녕하세요.

public delegate void OnClicked(); 의 코드는 선언부라고 생각할 수 있습니다.

딜리게이트가 함수를 저장할 수 있는 변수 이고 OnClick 이라는 딜리게이트(함수를 저장하는 변수)의 선언이라는 것을 정의 한 것이죠. 입력이 없고 출력이 없는 함수 형태의 딜리게이트를 사용하겠다는 뜻입니다.

Util 클래스에  넣었다는 이야기는 정의부가 거기로 옮겨갔기에 아마 그쪽 네임스페이스가 Game 이겠죠

using Game 하면 되지 않을까 생각되는데요.

그리고 onClickYes 와 onClickNo 의 실제 구현부가 있어야 동작할텐데요. 

이 소스에서는 안보이는데 혹시 같은 코드안에 함수가 존재하죠? 

onClickYes 와 onClickNo 도 사실 함수를 보면 입력이 없고 출력이 없는 함수입니다. 

그러니까 public delegate void OnClicked(); 라는게 있어야 SetListenerYes 나 SetListenerNo 에서 OnClicked 형태의 딜리게이트(함수를 저장하는 변수) 를 받는 다는 것이죠.

이게 이해가 잘 안되면 이전내용들을 몇일 간격으로 봐보세요.

저도 처음에 이해하기 어려웠는데 몇번 그렇게 해보시면 왜 이걸 이해못했지 하는 생각이 들겁니다. 

제가 생각하기에는 몇일간 보다보니 쉬운 내용들이 당연하게 이해되고 나서 추가적인 정보가 들어오면 정말로 당연하게 이해가 되는 것 같더라고요. 

좋은 하루 되세요 ^^

캐릭터 변경에 관해

0

230

1

Asteroid 생성에 관련해서

0

194

1

Part4 유니티로 세가지의 게임만들기 강의

0

211

1

Clamp 사용 시 앞서 설정한 ViewportToWorldPoint의 min, max를 사용하지 않고 새로 설정하는 이유가 있을까요

0

283

1

섹션8 슈팅게임 프로토타입 만들기3(적과 발사체)

0

269

1

캐릭터 고정데이터 로딩 강의

0

326

1

Destroy 함수 질문

0

413

1

GetComponent 강의 질문

0

344

1

transform.position과 transform.Translate 의 차이가 뭔가요??

0

1941

1

강의도중 질문이 있습니다

0

496

1

강의자료

0

284

0

117강 구조체를 정의하여 ShipData 구성

0

224

0

굳이 InitTime을 만들어서 호출 하는 이유가 있나요?

0

291

0

GameManager 의 Start()가 스페이스 누를때마다 반복실행됩니다.

0

415

1

Collider인 other.gameObject;

0

430

0

Generic에 대한 질문이 있습니다.

0

260

0

gameObject.setActive(false);

0

582

1

애플 앱스토어

0

248

0

비주얼스튜디오 오류

0

2151

1

part4강의

0

318

1

발사체 스피드

0

305

1

4분 44초 제가 이해한게 맞는지 궁금합니다

0

271

1

2분 44초 왜 void 함수를 써야하나욤..?

0

362

1

해당 부분 업데이트

0

260

1