c# - 当 Canvas Render Mode 设置为 World Space 时没有事件

标签 c# ios unity3d artoolkit

我正在构建一个使用 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 (在此屏幕截图之外 - 与此无关)

enter image description here

这是我的 Canvas 属性。请注意,我将它放在默认层中,因此 UI 将显示和渲染模式 = 世界空间:

enter image description here

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

enter image description here

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

请帮助并指出一些方向,说明为什么移动触摸输入在使用 UI 世界空间的 ARToolkit 中不起作用。

最佳答案

这确实是 unity 中的一些技巧。

您必须了解以下内容:

  • 如果将 Canvas 更改为 World Space,Canvas 将寻找一个 带有标签 "MainCamera" 的相机并将其用作相机 执行光线转换。

    enter image description here

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

    enter image description here

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

因此,您要么必须将相机的标签更改为“MainCamera”,要么将主相机插入 Canvas 中的Event Camera 插槽,或者如果他是,则执行这两个操作不使用 artoolkit。从您发布的屏幕截图来看,该插槽未分配,因为它显示“无”

关于c# - 当 Canvas Render Mode 设置为 World Space 时没有事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45409064/

相关文章:

ios - 健康工具包观察者查询总是在应用程序激活时调用

ios - 如何在 Swift 4 中使用 Swift 3 的过时语法

c# - JsonUtility.FromJson 创建列表<对象>

c# - 如何在 ASP.NET 中多次(加法)修改当前页面?

c# - 获取页数的逻辑

ios - 当他从后台返回时,检测到应用程序被通知中心或通过他的图标重新打开了吗? UI应用程序状态背景

c# - Unity3d 我应该缓存 AndroidJavaObject 实例吗?

c# - 在没有 unity3d 编辑器的情况下调试 c#

c# - c# 中的 sql 查询中的索引(从零开始)

c# - 如何在 WPF 中调用 windows 主题?