【Unity实用小知识点】EventTrigger在3D物体或UI上应用 您所在的位置:网站首页 unity输入框控制物体交互 【Unity实用小知识点】EventTrigger在3D物体或UI上应用

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

2024-05-31 07:03| 来源: 网络整理| 查看: 265

Event Trigger

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

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

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

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

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

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

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

在这里插入图片描述 当然因为都是其原理都是射线检测所以3D这些别忘了加 Box Collider之类的。同时 Event Trigger也需要EventSystem。 在这里插入图片描述 3D物体Pointer Click,具体想要实现的功能写方法里,然后类似Button一样用就行。请添加图片描述

总结

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

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



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有