如何使用默认 UI 将 Unity 项目构建为 HoloLens 对象?

How to build a Unity project as HoloLens object with default UI?

每当我在 HoloLens 上启动 Unity 项目时,它都会以某种 "fullscreen" 模式运行并隐藏所有其他放置在 space 中的对象。但是,预装的演示对象(例如 spaceship 和 puppet)可能会与其他对象一起放置在 space 中,并且默认情况下还提供一个 HoloLens UI(用于缩放、旋转和翻译对象)。

如何导出 Unity 项目,使其已经提供默认的 HoloLens UI 并且可以与其他对象共存?

你不能

至少,现在不是。

这是对 HoloLens SDK 允许的当前 API 访问级别的限制。创建全息图还不是我们能做的。 Microsoft 可以,因为他们能够在更深层次上工作,运行 直接与 HoloLens OS 交互的本地构建代码。它展示了硬件可以做什么,而不是开发人员可以访问什么。或者在 Unity 的情况下,Unity 团队拥有什么提供访问权限。例如,空间理解不是 VR 或 WSA UnityEngine 包的一部分。相反,HoloToolkit 可用于 provide a C# wrapper around the underlying C++ dll

此外,除了@Everts 在评论中所说的:

You cannot currently use holograms in the shell like some of the demo apps are doing. The API is limited. You can have 2D apps as tiles using the xaml export setting and those will open in the shell along other 2D apps, or you have to build your app as 3D and it will take over the whole view.

还有其他限制,例如无法从 HoloLens 打印。 Microsoft 有这些限制 documented 并且正在处理对这些功能的支持,它们只是当前不可用或将具有不可预测的行为。看起来 Microsoft 的目标最终将是支持它们,但没有关于何时的详细信息,因此可能永远不会提供全面支持。

此外,用于在 space 中定位全息图的代码也不可用 也就是说,如果您想在全屏模式下放置一个立方体如果您四处拖动并重新定位应用程序,您必须自己编写与现实世界发生碰撞的代码。很明显,微软已经竭尽全力使他们的全息图看起来不错......但还没有向开发人员公开它。

全屏应用程序也不支持屏幕键盘。我不是在开玩笑,我见过的“最佳”解决方法是创建一个 second 2D xmal 应用程序,您可以切换到内置键盘然后切换回来(没有关于如何切换的说明在 Unity 中实际 执行 )。所以我会在资产商店外使用 VR 键盘。

我也没有找到任何关于如何 样式 2D shell window 的信息,当你有一个 3D 全屏应用程序(你从开始菜单启动应用程序时得到它,而不是通过 Visual Studio 调试时)。它只是显示为空白的白色默认纹理,看起来很烦人(如果不是完全痛苦的话)。如果有 API 钩子可以像 Robo Raid 和 Learn Gestures 那样给它一个 3D 图标会很好,但同时我愿意接受一个简单的纹理。但我认为,即便如此,也不是受支持的 API 挂钩。或者如果是,我找不到任何相关信息。

所以,是的,目前,有很多开发人员 无法使用 HoloLens 做的事情。我们只需要等待微软进一步开发该技术并公开更多工具即可。或者自己写。