混合现实 Unity 文件选取器
Mixed Reality Unity File Picker
我正在构建目标环境必须包含混合现实的 Unity 应用。我已经能够在资产商店中找到非常好的文件选择器资产,但其中 none 似乎可以在混合现实耳机中使用,尽管即使在 VR 模式下它们也会出现在屏幕上。
是否有任何我应该使用的默认 MR 资产,或者是否有任何我应该寻找的东西?还是我必须从头开始构建所有这些?
谢谢
VR 的不同之处在于没有光标,因此普通的 EventSystem 无法开箱即用。对我有用的最简单的解决方法是:
向 UI 元素添加一个盒子碰撞器组件。来自控制器的 Raycast 对抗盒子碰撞器。如果碰撞器有一个实现 IPointerClickHandler 接口的组件,您可以针对它触发 OnPointerClick(PointerEventData e) 方法,它将被视为有效点击(尽管绕过事件系统导航)。
你需要传递一个 PointerEventData 对象,我不记得你是否可以只传递一个空值,但我很确定传递一个新的 PointerEventData(EventSystems.current) 就可以了。
对于拖动和更复杂的事件,您可能需要填写一些额外的字段以使 UI 正常运行
我最终使用从资产商店购买的 "file manager" 资产和混合现实工具包编写了自己的文件选择器。将它放在资产商店对我来说是否值得,或者现在我们有更好的 mrtk 可用,这会被事件所取代吗?
我正在构建目标环境必须包含混合现实的 Unity 应用。我已经能够在资产商店中找到非常好的文件选择器资产,但其中 none 似乎可以在混合现实耳机中使用,尽管即使在 VR 模式下它们也会出现在屏幕上。
是否有任何我应该使用的默认 MR 资产,或者是否有任何我应该寻找的东西?还是我必须从头开始构建所有这些?
谢谢
VR 的不同之处在于没有光标,因此普通的 EventSystem 无法开箱即用。对我有用的最简单的解决方法是: 向 UI 元素添加一个盒子碰撞器组件。来自控制器的 Raycast 对抗盒子碰撞器。如果碰撞器有一个实现 IPointerClickHandler 接口的组件,您可以针对它触发 OnPointerClick(PointerEventData e) 方法,它将被视为有效点击(尽管绕过事件系统导航)。
你需要传递一个 PointerEventData 对象,我不记得你是否可以只传递一个空值,但我很确定传递一个新的 PointerEventData(EventSystems.current) 就可以了。
对于拖动和更复杂的事件,您可能需要填写一些额外的字段以使 UI 正常运行
我最终使用从资产商店购买的 "file manager" 资产和混合现实工具包编写了自己的文件选择器。将它放在资产商店对我来说是否值得,或者现在我们有更好的 mrtk 可用,这会被事件所取代吗?