我正在构建一个使用 ARToolkit for Unity3D 的 AR iOS 应用程序。我的目标是在世界空间模式下创建一个 UI,这样当我将手机摄像头指向图像时,它会以 3D 形式显示 UI(例如选择产品或滚动信息列表等...)。
我遵循的说明:
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 都“固定”在屏幕上。但是,当我使用 World Space 时,UI 触摸输入事件不会触发。这是我的项目的设置:
Marker2 是图像检测发生的地方。然后它应该显示 2 个立方体和 1 个带有按钮和 ScrollView 的 UI Canvas (在此屏幕截图之外 - 与此无关)
这是我的 Canvas 属性。请注意,我将它放在默认层中,因此 UI 将显示和渲染模式 = 世界空间:
好的,我举起了我的图像,它检测并显示了 2 个立方体和按钮。但是任何点击或触摸按钮都没有效果。以前在 UI 层和屏幕空间覆盖中,我可以点击按钮并且它工作正常(基本上在控制台中输出一些文本 - 无关紧要)。
无论如何,我尝试使用一个不使用 ARToolkit 而只使用普通相机的新项目进行测试。一切正常。所以这肯定与 ARToolkit 中断移动触摸事件有关。
请帮助并指出一些方向,说明为什么移动触摸输入在使用 UI 世界空间的 ARToolkit 中不起作用。
最佳答案
这确实是 unity 中的一些技巧。
您必须了解以下内容:
如果将 Canvas 更改为 World Space,Canvas 将寻找一个 带有标签 "MainCamera" 的相机并将其用作相机 执行光线转换。
如果没有找到带有“MainCamera”标签的Camera,Unity会 使用在 Canvas 的 Event Camera 插槽中设置的 Camera。
- 最后,如果没有找到带有“MainCamera” 标签的相机,并且 Canvas 的Event Camera 插槽中没有设置相机,有 不会进行光线转换,您的 UI 也不会发送任何事件。
因此,您要么必须将相机的标签更改为“MainCamera”,要么将主相机插入 Canvas 中的Event Camera 插槽,或者如果他是,则执行这两个操作不使用 artoolkit。从您发布的屏幕截图来看,该插槽未分配,因为它显示“无”。
关于c# - 当 Canvas Render Mode 设置为 World Space 时没有事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45409064/