2

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

2 回答 2

4

我同意其他人的观点,这可能是由于编辑器中的 mono 与您为获得 UWP 应用程序而编译的 .net 之间的差异造成的。试试这个:

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

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

于 2016-11-13T17:21:12.233 回答
1

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

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

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

于 2016-11-13T10:27:04.847 回答