Unity 游戏物体 EventTrigger 物体动态事件监听

UGUI中普通的事件触发方法已经了解了,现在讲一下另一种触发事件的方法,这种方法不仅可以让2D的UGUI触发还可以让一个3D物体来触发某个方法。

首先写一个脚本用来写一个触发事件的log方法,如下:

publicclassBtnEventTriggerTest : MonoBehaviour

{

    voidStart ()

    {

       //获取或添加EventTrigger组件

       EventTrigger trigger= transform.GetComponent<EventTrigger>();

        if (trigger == null)

        {

           trigger=transform.gameObject.AddComponent<EventTrigger>();

        }

       //初始化EventTrigger.Entry的数组

       trigger.triggers = newList<EventTrigger.Entry>();

       //创建各种 EventTrigger.Entry 的类型

       EventTrigger.Entry entry = newEventTrigger.Entry();

       //设置Entry的eventID类型 即EventTriggerType的各种枚举(比如鼠标点击,滑动,拖动等)

       entry.eventID = EventTriggerType.PointerEnter;

       //注册代理

        UnityAction<BaseEventData> callback = newUnityAction<BaseEventData>(OnEventTrigger);

       //添加代理事件到EventTrigger.Entry

       entry.callback.AddListener(callback);

 

       EventTrigger.Entry entry2 = newEventTrigger.Entry();

       entry2.eventID = EventTriggerType.PointerDown;

       UnityAction<BaseEventData> callback1 = newUnityAction<BaseEventData>(OnMouseDown);

       entry2.callback.AddListener(callback1);

 

       //在EventTrigger.Entry的数组添加EventTrigger.Entry

       trigger.triggers.Add(entry);

       trigger.triggers.Add(entry2);

    }

 

   privatevoid OnMouseDown(BaseEventData arg0)

   {

       Debug.Log("OnMouseDown");

   }

 

   privatevoid OnEventTrigger(BaseEventData arg0)

   {

       Debug.Log("OnEventTrigger");

   }

}

 


然后在UGUI的UI组件上添加该脚本,或在添加一个EventTrigger组件,运行使用鼠标即可。


然而在游戏物体比如Cube上,也是同UI一样添加脚本和EventTrigger组件。


但是摄像机却不能识别3D的游戏物体的鼠标事件,在网上查了一下,原来还要在摄像机下添加一个Physics Raycaster的组件,用来检测鼠标射线,然后运行使用鼠标即可。

你可能感兴趣的:(Unity 游戏物体 EventTrigger 物体动态事件监听)