【发布时间】:2021-10-29 04:42:23
【问题描述】:
我正在尝试找出是否可以在沉浸式 Unity 应用程序中使用本机 HoloLens 文件选择器。到目前为止,我已经测试了 2 个样本,它们都可以工作,但前提是它们为整个应用程序使用 UI 窗口。我一直在关注其他人的 SO 帖子并创建了这个:
using System;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;
#if WINDOWS_UWP
using System;
using System.Threading.Tasks;
using Windows.Storage;
using Windows.System;
using System.Threading.Tasks;
using Windows.Storage.Streams;
using Windows.Storage.Pickers;
#endif
...
void Start()
{
#if WINDOWS_UWP
SelectJSON();
#endif
}
#if WINDOWS_UWP
void SelectJSON()
{
UnityEngine.WSA.Application.InvokeOnUIThread(async () =>
{
debug.text = "starting filePicker";
var filepicker = new FileOpenPicker();
filepicker.FileTypeFilter.Add(".json");
debug.text = "waiting for single file";
var file = await filepicker.PickSingleFileAsync();
UnityEngine.WSA.Application.InvokeOnAppThread(() =>
{
debug.text = "about to read data";
ReadData(file);
}, false);
}, false);
}
#endif
在我的应用程序中,我进入了“new FileOpenPicker()”部分,这就是代码挂起的地方。我相信该应用程序正在尝试打开文件资源管理器窗口,但由于我处于沉浸式 Unity 应用程序中,它只是挂在那里,因为用户没有响应。我之前已经输入了 try/catch 语句,但没有任何错误或异常。我在 Unity 中尝试了各种设置,例如 Default FullScreen 或 Run In Background,但这些都没有做任何事情。有没有人让原生 FilePicker 在他们的 Unity 应用程序中工作,或者可以告诉我我做错了什么?
【问题讨论】:
-
请提供更多开发环境信息,如Unity版本号、Unity项目设置和构建设置、HoloLens系统版本等,并检查是否安装了应用(如 OneDrive),允许拾取。
-
我在 UWP 平台和 HoloLens 2 版本 21H1 上使用 Unity 2020.2.3。我在帖子中提到的两个示例没有安装 FilePicker 应用程序,所以我知道没有一个是可能的。
-
我对你的代码做了一点修改,让它在点击按钮后执行。然后,将其部署到设备上进行测试,对我来说效果很好。我正在使用 Unity 2020.3.1f,您可以升级 Unity 并重试吗?如果您看到相同的行为,请提供一个 MVCE(stackoverflow.com/help/minimal-reproducible-example) 进行重现,以便我们定位问题或找到解决方案。
标签: c# unity3d hololens filepicker