如果需要给大量相同的游戏对象添加某一个事件,手动操作可能会非常麻烦费体力,通过在Start()方法中动态添加,可以省去不少体力活。
大致的流程为:
(1) 在当前游戏对象上创建EventTrigger对象;
(2) 创建事件触发器的Entry,设置Entry的属性包括事件类型,以及事件响应函数。
(3) 将触发器的Entry添加到事件触发器EventTrigger对象上面。
例如:
protected void Start() { EventTrigger trigger = gameObject.AddComponent<EventTrigger>();//在对象上新建EventTrigger EventTrigger.Entry hoverEntry = new EventTrigger.Entry();//创建Entry hoverEntry.eventID = EventTriggerType.PointerEnter; //设置Entry的类型 hoverEntry.callback = new EventTrigger.TriggerEvent(); UnityAction<BaseEventData> hoverCallback = new UnityAction<BaseEventData>(OnHoverCallback); //设置Entry的回调函数 hoverEntry.callback.AddListener(hoverCallback); trigger.triggers.Add(hoverEntry); EventTrigger.Entry exitEntry = new EventTrigger.Entry(); exitEntry.eventID = EventTriggerType.PointerExit; exitEntry.callback = new EventTrigger.TriggerEvent(); UnityAction<BaseEventData> exitCallback = new UnityAction<BaseEventData>(OnExitCallback); exitEntry.callback.AddListener(exitCallback); trigger.triggers.Add(exitEntry); } |
事件处理函数定义:
private void OnHoverCallback(BaseEventData eventData) { } |
另外,如何获取触摸板的点击呢?
Touch touch = Input.GetTouch(0); if (touch.phase == TouchPhase.Began) { OnClick(); } |