【Unity实用小知识点】EventTrigger在3D物体或UI上应用

Event Trigger

Event Trigger可以在一些简单交互上非常方便的使用
(废话比较多,想直接看UI和3D区别的直接跳到总结)
在这里插入图片描述
官方API
描述
从 EventSystem 接收事件并为每个事件调用注册函数。
EventTrigger 可用于指定您希望为每个EventSystem事件调用的函数。您可以将多个函数分配给单个事件,并且每当 EventTrigger 接收到该事件时,它将按照提供的顺序调用这些函数。

你可以通过Add New Event Type去添加自己想要的事件,例如鼠标进入,出来,点下,点击以及拖拽…等。
【Unity实用小知识点】EventTrigger在3D物体或UI上应用_第1张图片
把这组件加到你想要反应的物体上,然后选择自己想要触发的事件。选择之后就类似Button里那样去添加脚本挂在的物体然后选择自己写好的方法。
【Unity实用小知识点】EventTrigger在3D物体或UI上应用_第2张图片
比如说这边做一个拖动图片的功能,EventTrigger里选Dray,然后自己脚本里写一个位置根据鼠标变化的方法(3D物体的话不能这样,存在应该位置坐标转换的物体)。

	public void ToDray()
    {
        transform.localPosition =new Vector2(Input.mousePosition.x - Screen.width / 2, Input.mousePosition.y - Screen.height / 2);
    }

【Unity实用小知识点】EventTrigger在3D物体或UI上应用_第3张图片
上面是Event Trigger对UI的交互,接下来是和3D物体的交互。
要是和UI一样去操作会发现对3D物体没有反应。
其实都是也是用射线去检测物体然后去交互的,只是人家都封装好了。创建UI时候在Canvas里会自动有个Graphic Raycaster组件
【Unity实用小知识点】EventTrigger在3D物体或UI上应用_第4张图片
接下来去官方看Graphic Raycaster是什么

Graphic Raycaster 用于对Canvas 进行光线投射。Raycaster 查看画布上的所有 Graphics 并确定它们中是否有任何一个被击中。
Graphic Raycaster 可以配置为忽略背面图形以及被它前面存在的 2D 或 3D 对象阻挡。如果您希望将此元素的处理强制到 Raycasting 的前面或后面,也可以应用手动优先级。

3D物体不属于Canvas,所以无效,那么就需要自己在Camera(相机)里加一个Physics Raycaster组件

Raycaster 对场景中的 3D 对象进行光线投射。这允许将消息发送到实现事件接口的 3D 物理对象。

【Unity实用小知识点】EventTrigger在3D物体或UI上应用_第5张图片
当然因为都是其原理都是射线检测所以3D这些别忘了加 Box Collider之类的。同时 Event Trigger也需要EventSystem。
【Unity实用小知识点】EventTrigger在3D物体或UI上应用_第6张图片
3D物体Pointer Click,具体想要实现的功能写方法里,然后类似Button一样用就行。【Unity实用小知识点】EventTrigger在3D物体或UI上应用_第7张图片

总结

3D物体相对于UI去用Event Trigger 要多出的内容
1.自己去Camera里加Physics Raycaster组件
2.必须要有Event System(也就是创建Canvas会自带创建的那玩意)
3.别忘了加 Box Collider之类

最后别忘了别被遮挡比如说常见的被UI遮挡.

你可能感兴趣的:(【实用小知识点】,unity,ui,3d)