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

김진호님의 프로필 이미지
김진호

작성한 질문수

[켠김에 출시까지] 유니티 방치형 키우기 게임 (M1 + T2)

Managers

UI_TitleScene에서 bindevent

작성

·

255

0

GetObject((int)GameObjects.StartImage).BindEvent((evt) =>

{

Debug.Log("ChangeScene");

Managers.Scene.LoadScene(EScene.GameScene);

});

에서 bindevent()로

 

extention의

public static void BindEvent(this GameObject go, Action<PointerEventData> action = null, Define.EUIEvent type = Define.EUIEvent.Click)

{

UI_Base.BindEvent(go, action, type);

}로 오고 여기서 UI_Base에 있는

 

public static void BindEvent(GameObject go, Action<PointerEventData> action = null, Define.EUIEvent type = Define.EUIEvent.Click)

{

UI_EventHandler evt = Util.GetOrAddComponent<UI_EventHandler>(go);

switch (type)

{

case Define.EUIEvent.Click:

evt.OnClickHandler -= action;

evt.OnClickHandler += action;

break;

case Define.EUIEvent.PointerDown:

evt.OnPointerDownHandler -= action;

evt.OnPointerDownHandler += action;

break;

case Define.EUIEvent.PointerUp:

evt.OnPointerUpHandler -= action;

evt.OnPointerUpHandler += action;

break;

case Define.EUIEvent.Drag:

evt.OnDragHandler -= action;

evt.OnDragHandler += action;

break;

}

}로 참조해서 가져오는것 맞나요?

 

궁금한것은 지금 define에 4가지 evt상태를 만들어놨는데

pointdown-누를때

pointup-땔때

drag-드래그

Click-클릭

 

지금은 제일위에 object.bindevent(evt)=> 여기에 evt로 4가지 전부 받아지는것아닌가요? 강의를 다시보니 loadAysync로 전부 로드완료한뒤에 클릭하면 된다고 되어있는데 그냥 4가지 전부 evt로 가져와지고 제일먼저 입력된 click이 받아와지는건가요? pointdown은 누를때 이벤트가 전송되면 pointdown으로 evt가 받아와져야 되는것 아닌가요?

답변 1

0

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

무조건 제일 먼저 입력된 click이 받아지는 것이 아니고,

함수 Bind 인자의
EUIEvent type = Define.EUIEvent.Click
를 이용해서 어떤 행동에 행동을 묶을지 결정할 수 있습니다.
별다른 인자없이 함수를 호출하면 기본으로는 클릭에 이벤트를 bind합니다.

김진호님의 프로필 이미지
김진호
질문자

감사합니다

김진호님의 프로필 이미지
김진호

작성한 질문수

질문하기