繁体   English   中英

如何在 Hololens 背景下加载字节数组

[英]How to Load Byte-Array on background of Hololens

我使用 MixedRealityToolKit 为带有 Unity 2020.3.12f 的 Hololens 创建了一个应用程序。 我在 Hololens 背景中将文件加载到字节数组时遇到问题。

为了在我的 Hololens 应用程序上可视化 png-grafics(> 100 个文件),我从 ByteArrays 动态创建精灵。 使用File.ReadAllBytes将图像(~96 KB)加载到字节数组中需要大约 300 毫秒(非常慢)。 为了保持快速更新显示图像的过程,所有图像的字节数组应预加载到 GameObjects 脚本中。

我决定将 20 个文件加载到 ByteArray 并将第一张图像显示为精灵。

在这个过程之后,其他文件应该被加载到后台,所以应用程序仍然允许交互。 我从按钮调用的函数应如下所示:

public void LoadSomething()
{
  UnityEngine.WSA.Application.InvokeOnUIThread(async () =>
  {
    #Load First Byte-Arrays and show up first Image

    #Load the rest of the Bytes-Arrays without blocking Interaction on App
    LoadBytes();
  }, false);
}

要加载的文件作为存储文件存储在游戏对象“管理器”上。 加载函数可能是这样的:

private void LoadBytes()
{
  foreach (Storagefile storageFile in manager.listOfStorageFiles)
  { 
     byte[] filedata = File.ReadAllBytes(storageFile.Path);
     manager.byteList.Add(fileData);
  }
}

我尝试使用Task.Run(() => LoadBytes )启动该函数,但这会冻结 UI,并且没有任何反应。 我认为在 CPU 上使用 GameObject 存在问题。

有没有人从 UIThread 调用这个函数的解决方案仍然保持我的 UI 交互?

由于您有任何 I/O 绑定需求,建议改进LoadBytes()作为对后台作业执行非阻塞等待的异步方法。 更多信息请参见: 异步编程模式

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM