Canvas 渲染模式设置为世界 Space 时无事件

No event when Canvas Render Mode is set to World Space

我正在构建一个使用 ARToolkit for Unity3D 的 AR iOS 应用程序。我的目标是在世界 Space 模式下创建一个 UI,这样当我将 phone 相机指向图像时,它将以 3D 形式显示 UI(例如 select 产品或滚动信息列表等...)。

我遵循的说明:

https://github.com/artoolkit/ar6unity-wiki/wiki/Setting-Up-Your-First-ARToolKit-for-Unity-Scene

https://github.com/artoolkit/ar6unity-wiki/wiki/ARToolKit-for-Unity-on-iOS

我制作 UI Render Mode = Screen Space Overlay 没问题。这意味着无论相机移动如何,UI canvas 在屏幕上都是 "fixed"。但是,当我使用 World Space 时,UI 触摸输入事件不会触发。这是我的项目的设置:

Marker2 是图像检测发生的地方。然后它应该显示 2 个立方体和 1 个 UI canvas 带有按钮和滚动视图(在此屏幕截图之外 - 与此无关)

这是我的 canvas 属性。请注意,我将其放在默认层中,因此 UI 将显示并且 Render Mode = World Space:

好的,我举起了我的图片,它检测并显示了 2 个立方体和按钮。但是任何点击或触摸按钮都没有效果。以前在 UI 层和屏幕 Space 叠加层中,我可以点击按钮并且它工作正常(基本上在控制台中输出一些文本 - 无关紧要)。

无论如何,我尝试使用一个不使用 ARToolkit 而只使用普通相机的新项目进行测试。一切正常。所以肯定和ARToolkit打断手机触摸事件有关

请帮助并指出为什么移动触摸输入在使用 UI World Space 的 ARToolkit 中不起作用的原因。

这真是unity中的一些技巧。

你必须了解以下内容:

  • 如果将 Canvas 更改为世界 Space,Canvas 将查找 带有标签 "MainCamera" 的相机并将其用作相机 执行光线投射。

  • 如果没有找到带有"MainCamera"标签的Camera,Unity会 使用在 Canvas' Event Camera 插槽中设置的相机。

  • 最后,如果没有找到带有"MainCamera"标签的Camera,并且 Canvas' Event Camera 插槽中没有设置相机,有 将不会进行光线投射,您的 UI 不会发送任何事件。

所以你必须将摄像机的标签更改为 "MainCamera" 或将主摄像机插入 Event Camera 插槽在 Canvas 中,或者如果他不使用 artoolkit,则执行这两个操作。从您发布的屏幕截图来看,该插槽未分配,因为它显示 "None".