从 Unity 到 HoloLens 的程序问题 - 无法从 'string' 转换为 'System.IO.Stream'

Program Issues Going From Unity To HoloLens - Cannot convert from 'string' to 'System.IO.Stream'

我有一个使用 C# 在 Unity 中编写的程序,它初始化一个新的 StreamReader 并继续从我存储在 Unity 资源文件夹中的文本文件中读取文本数据。当我在 Unity 中单击播放时,一切正常 - 一切正常,文本被完美读取和显示。但是,当我尝试通过 HoloLens 模拟器 运行 构建它时(平台:Windows Store,SDK:Universal 10,Build and 运行 On:Local Machine),我收到错误:错误 CS1503:参数 1:无法从 'string' 转换为 'System.IO.Stream'。

我不明白为什么这个错误首先出现,因为 StreamReader 的构造函数有一个接受字符串参数的重载。

我的代码如下:

string metadata = String.Format("/Resources/.../metadata.txt", list);
if (File.Exists(Application.dataPath + metadata))
{
     using (StreamReader sr = new StreamReader(Application.dataPath + metadata))
            {
                  // ....
            }
}

Unity Mono 和 UWP 上的 .NET 在某些情况下 API 不同。可能是 UWP 版本中缺少 StremReader(string) ctor。

例如,我遇到过 Delegate.CreateInstance 在编辑器中工作但在 Hololens 上失败并且需要不同版本的情况。

您可以将内容包装在宏中或使用 UWP 所需的宏。

我同意其他人的看法,这可能是由于编辑器中的单声道与您正在编译以获取 UWP 应用程序的 .net 之间的差异造成的。试试这个:

using(StreamReader sr = new StreamReader(new FileStream(Application.dataPath + metadata, FileMode.Open)))

这应该是合法的单声道和 .net 代码。