程序问题从Unity转到HoloLens – 无法从’string’转换为’System.IO.Stream’

我有一个使用C#在Unity中编写的程序,它初始化一个新的StreamReader并继续从我存储在Unity资源文件夹中的文本文件中读取文本数据。 当我在Unity中单击播放时,一切正常,并且文本被完美地读取和显示。 但是,当我尝试构建它以便通过HoloLens模拟器(平台:Windows Store,SDK:Universal 10,构建和运行:本地机器)运行它时,我收到错误:错误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)) { // .... } } 

我同意其他人的观点,这很可能是由于编辑器中的mono与您正在编译的.net之间的差异导致的UWP应用程序。 试试这个:

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

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

在某些情况下,API在UWP上的Unity Mono和.NET之间存在差异。 可能是UWP版本中缺少StremReader(字符串)ctor。

例如,我有一个案例,其中Delegate.CreateInstance在编辑器中工作但在Hololens上失败并且需要不同的版本。

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