3

我是 Unity 引擎和混合现实应用程序开发的新手,所以请多多包涵。

我一直在使用 Microsoft Mixed Reality Toolkit for Unity 尝试为游戏对象设置动画并将其移动到一边。一个简单的动作,非常类似于 Microsoft 使用名为“InteractableObject”的工具包提供的示例场景(下面提供了信息链接)

可交互对象 - 混合现实 (Microsoft Docs)

混合现实工具包-Unity Interactable Objects and Receivers (Github)

Unity 中的这个示例场景有多个对象用作“按钮”。使用混合现实工具包,即使您希望用户与之交互以在选择时执行某种操作的对象也被视为按钮。至少根据我实际上能够找到的有关该主题的文档。这是一系列截图,描绘了我的游戏对象的检查器面板和我的对象的容器:

游戏对象检查面板

游戏对象检查面板

GameObject Container Inspector 面板(第 1 部分

GameObject Container Inspector 面板(第 1 部分)

GameObject Container Inspector 面板(第 2 部分

GameObject Container Inspector 面板(第 2 部分)

当我将标准光标放在它上面时,我试图让一个游戏对象移到一边。在我提到的示例场景中,使用气球对象完成了相同的操作。我创建了动画师和状态机,就像他们在示例中所做的一样,并以几乎相同的格式设置了我的游戏对象。唯一真正的区别是自己创建了一个气球对象,而我使用的是我公司的一组不同的自定义模型。

当我尝试在 Unity 编辑器中播放应用程序时,将光标放在对象上时状态不会改变。我可以使用编辑器强制更改状态并启动所需的动画,但它不会自行更改状态。我将状态机配置为与 Microsoft 示例相同,并将状态变量设置为相同。当光标移动到对象上时,它应该从“观察”状态变为“目标”或“观察目标”状态。下面提供了 GameObject 状态机的屏幕截图和相关特定转换的检查器面板:

GameObject Animator 状态机设置

GameObject Animator 状态机设置

Observation to ObservationTargeted Transition Inspector Panel

Observation to ObservationTargeted Transition Inspector Panel

我检查并验证了混合现实工具包添加的所有组件都是相同的。这包括 DefaultCursor、InputManager、MixedRealityCameraParent 和 Directional Light。我还检查了所有脚本的编码是否相同,并且它们是。我没地方看了。我将 Visual Studio 调试器附加到 Unity 中的项目,并验证它不会自行更改状态。但我不知道为什么。我认为问题与过渡的设置有关,但我一直无法找到问题所在。所有其他提到的组件都是由微软提供的,我自己没有更改,也没有在示例场景中更改。

如果其他人遇到过类似的问题,或者可能知道我在哪里可以找到问题,请告诉我。我什至还没有将项目构建到 UWP 应用程序中。

4

1 回答 1

0

我知道已经过去几个月了,但您还在寻找解决方案吗?

使用最新版本的混合现实工具包,您可以将任何游戏对象用作按钮。只需阅读本文档。我的 Unity 项目中有一些立方体作为按钮,我添加到它以使其工作的唯一额外组件Interactable是来自混合现实工具包

如果您想在将光标放在对象上时触发一些动画(或者如果您打算将其与 Hololens 一起使用,请查看它),那么您可以Interactable通过添加新事件将它们添加到对象中(例如:OnFocus()事件)

希望这有帮助

于 2019-08-30T07:57:16.937 回答