인프런 커뮤니티 질문&답변

Hyobin Kim님의 프로필 이미지
Hyobin Kim

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진

UI 자동화 #4

Lambda랑 delegate의 이해가 부족한거 같은데요

작성

·

364

2

AddUIEvent(go, (PointerEventData data) => { go.transform.position = data.position; }, Define.UIEvent.Drag);

여기서 Action<PointerEventData> action 자리에 저 람다식을 넣을 수 있는 이유가 뭔가요?

그리고 

GetButton((int)Buttons.PointButton).gameObject.AddUIEvent(OnButtonClicked);

여기서 ObubttonClicked를 Action<PointereventData>에 넣을수 있는 이유가 뭔가요?

답변 2

1

Rookiss님의 프로필 이미지
Rookiss
지식공유자

Action<PointerEventData>
- PointerEventData를 input으로
- void를 output으로 받는 어떤 함수 타입도 받을 수 있으니

lamba를 만들 때 시그니처를 맞춰주면 Action<> 자리에 넣어줄 수 있습니다.

OnButtonClicked도 마찬가지입니다.

delegate 사용법중 Observer 패턴으로 만들기 위해
함수를 '기억'하는 용도도 있지만
그냥 정말 저렇게 함수 자체를 변수도 받는 역할도 합니다.

0

Hyobin Kim님의 프로필 이미지
Hyobin Kim
질문자

생각을 너무 어렵게 하고 있었나 봅니다

해답의 실마리는 람다식 가장 첫부분에 있었네요

"함수를 변수로 받을 수 있게끔 해준다"

언제나 감사드립니다

Hyobin Kim님의 프로필 이미지
Hyobin Kim

작성한 질문수

질문하기