TL;博士
从 Google VR 升级到 Google Cardboard XR 插件后。寻找有关以下方面的文档/建议:
背景:
我目前的做法:
a.我设置了十字线指针的距离
b.将碰撞器附加到我想要激活的对象并使其成为触发器
c.将事件触发器添加到对象。我使用pointerEnter和pointerExit事件触发器
如果该对象位于相机/十字线指针的范围内,则它会变为活动状态并且我的脚本将运行。这通常首先检查用户是否仍然专注于该对象,例如1-3 秒(由我的脚本确定),然后执行脚本的其余部分 - 这可确保不会错误地选择对象。这非常适合我的需求,并且在我的应用程序中一致实现
结果:
当我尝试使用应用程序中的新插件运行此程序时,按照快速设置指南,我确实得到了预期的行为;十字线指针将状态从点更改为圆圈,但随后出现以下错误:
当我“看”交互对象时
调用EventTrigger类的OnPointerEnter函数失败 不带参数调用函数 OnPointerEnter,但该函数需要 1。 UnityEngine.GameObject:SendMessage(字符串) CardboardReticlePointer:Update ()(位于 ./Library/PackageCache/com.google.xr.cardboard@17e19f289a/Runtime/CardboardReticlePointer.cs:158) 调用EventTrigger类的OnPointerExit函数失败
当我“把目光从交互对象上移开”时
不带参数调用函数 OnPointerExit,但该函数需要 1。 UnityEngine.GameObject:SendMessage(字符串) CardboardReticlePointer:更新()(位于./Library/PackageCache/com.google.xr.cardboard@17e19f289a/Runtime/CardboardReticlePointer.cs:167)
我确实找到了这篇文章,但不知道它是否相关,因为我不理解解决方案,并且在没有一点帮助的情况下更改 Google 代码肯定感到不舒服
所以请您帮忙解决以下问题:
如何在编辑器(而不是代码)中实现标线指针 + 碰撞器 + onPointerEnter/onPointerExit 事件处理程序来执行分配给该对象的脚本,而不必将数百个对象更改为不同的方法?
鉴于当我用代码替换编辑器中的事件触发器时它可以工作,我认为我只需要知道:
如果有任何不清楚或您需要更多信息,请告诉我
谢谢
HelloCardboard 演示场景中包含的标线正在向光线击中的 UI 层中的对象发送“OnPointerEnter”和“OnPointerExit”消息,但 EventTrigger 不会响应。
您可以编写自己的超级简单的 MessageTrigger 类来响应从十字线发送的那些消息,并使用它来代替 EventTrigger 组件。这是一个包含这两个方法的 C# 脚本: void OnPointerEnter(),和 void OnPointerExit()。
或者您可以使用PhysicsRaycaster,并扩展事件系统输入,使十字线与标准EventTrigger一起工作。
可以在此 Cardboard SDK 论坛主题中找到说明: https://github.com/googlevr/cardboard/issues/140