Program Issues Going From Unity To HoloLens - Cann

2020-04-16 18:43发布

I have a program written in Unity using C# that initializes a new StreamReader and proceeds to read the text data from a text file I have stored in Unity's resources folder. Everything works fine when I click play in Unity -everything works and the text is read and displayed perfectly. However, when I try to build it in order to run it via the HoloLens emulator (Platform: Windows Store, SDK: Universal 10, Build and Run On: Local Machine), I get the error: error CS1503: Argument 1: cannot convert from 'string' to 'System.IO.Stream'.

I don't understand why this error is even showing up in the first place as the constructor for a StreamReader has an overload that accepts a string parameter.

My code is as follows:

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

2条回答
Juvenile、少年°
2楼-- · 2020-04-16 18:52

I agree with the others, this is likely caused by a diffence between mono in the editor and the .net that you are compiling with to get a UWP application. Try this instead:

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

This should be legal mono and .net code.

查看更多
等我变得足够好
3楼-- · 2020-04-16 18:55

The API differs in some cases between Unity Mono and .NET on UWP. It could be the StremReader(string) ctor is missing from the UWP version.

For instance, I had a case where Delegate.CreateInstance works in Editor but fails on Hololens and requires a different version.

You can wrap things in macros or use the one UWP requires.

查看更多
登录 后发表回答