首页 > 解决方案 > 在 HoloLens 2 上的 Unity 应用程序中打开文件浏览器

问题描述

所以看起来这将是一个简单的解决方案,但由于我找不到任何关于如何做到这一点的文档,它实际上与暴力猜测密码相同。

环境

我正在努力实现的目标

问题

背景/上下文

使用 MRTK 2/HoloLens 2,您无需退出 Unity 应用程序即可启动外部应用程序。HoloLens 1 无法做到的事情。Microsoft 在他们的 Unity 示例包中提供了证明:Assets/MixedRealityToolkit.Examples/Demos/HandTracking/Scenes/HandInteraction.Examples.unity一旦您将 .Foundation 和 .Examples 外部包加载到您的 Unity 项目中。

在提供的场景中,在所有呈现的对象中,右侧有两个按钮,按下时将启动边缘浏览器或操作系统的设置应用程序。这是通过一个附加的启动 URI 脚本来完成的,该脚本.OpenURL在用户通过 GameObject 的检查器提供的字符串上运行。

打开边缘浏览器的按钮的 GameObject 检查器屏幕截图 打开设置的按钮的游戏对象检查器屏幕截图

以及运行用户输入字符串的代码片段(由 Microsoft 在 MRTK2 中提供):

public void Launch(string uri){
    ...
    Application.OpenURL(uri);
    ...
}


到目前为止我尝试过的

由于桌面上的 Windows 10 和 Windows 全息操作系统非常相似,当 Unity 处于播放模式时按下这些按钮时,这些按钮将完全发挥作用,启动计算机的默认浏览器和 Windows 10 的设置应用程序。
在此假设下我查找了如何打开文件浏览器/资源管理器,并能够使用explorer文本框中的字符串成功启动它,但仅限于 Windows 10 桌面。在 HoloLens 2 上运行时它不起作用。不出所料,Windows 10 和 Windows 全息操作系统之间存在差异,因此测试它有点乏味,因为我每次需要测试时都需要构建。到目前为止,我测试过的字符串是:
explorer explorer.exe ms-explorer ms-browser ms-storage ms-storage.storagefile:// (and without the ://) https://C:\
等等....

认为这Application.OpenURL可能不是唯一/最好的路线,我还尝试了不同的脚本:

public void Opener(){
    System.Diagnostics.Process.Start("explorer.exe");
}

但再一次,这种方法在 Windows 10 桌面上完美运行,但在 HoloLens 2 中却不行。我可以继续提供更多示例和解释,但我已经担心我必须将这篇文章重新定义为长度为 Wikipedia 的文章它已经到了。

就是这样。我不知道从这里去哪里。因此,当我继续随机进入 Googleverse 并查看我能找到哪些相关的片段来测试并证明它们在桌面而不是 HoloLens 2 上工作时,想法/建议是什么?我不相信这是一个复杂的问题/解决方案。但据我所知,这是一个非常具体的文档,由于 HoloLens 2 仍然是新的和稀缺的,因此文档为零。

(另外我不能为 HoloLens 2 创建一个新标签,不够好。所以现在我必须使用常规的 hololens 标签)

标签: c#unity3duriexplorerhololens

解决方案


我一直在与 Microsoft 的开发人员支持人员进行一些交流,他们在透露有关此主题的更多信息方面非常有帮助,我们同意在这里记录下来以防有人将来会遇到这种需求/问题。



目前无法从 HoloLens 2 上的 Unity 应用程序中访问本机文件浏览器。在第 3 方解决方案之前,最好的本机操作方案是使用 FileOpenPicker:
https ://docs.microsoft.com/en-我们/windows/混合现实/app-model#file-pickers

除了完全原生的解决方案之外,下一个最佳做法是使用资产商店中的第 3 方资产。由于我的开发人员环境/工作限制,我不确定我个人是否能够使用此方法,但对于大多数其他人来说,这是一个可行的行动方案。

我正在考虑将其作为 HoloLens 2 当前状态的官方答案,但如果未来情况发生变化,我很乐意对此进行修改。



tl;博士版本:

目前(2020 年初)文件资源管理器无法通过应用程序原生访问,最佳/最接近的原生解决方案是使用FileOpenPicker或 Unity Asset Store 上的第 3 方资源。


推荐阅读