작성
·
261
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
무조건 제일 먼저 입력된 click이 받아지는 것이 아니고,
함수 Bind 인자의
EUIEvent type = Define.EUIEvent.Click
를 이용해서 어떤 행동에 행동을 묶을지 결정할 수 있습니다.
별다른 인자없이 함수를 호출하면 기본으로는 클릭에 이벤트를 bind합니다.
감사합니다