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

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遮挡.

  • 10
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值