Unity5.x中如何动态给对象添加事件

如果需要给大量相同的游戏对象添加某一个事件,手动操作可能会非常麻烦费体力,通过在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();

}

猜你喜欢

转载自blog.csdn.net/qq_21743659/article/details/128528948