我从不同文件夹中的几个文本文件中提取一些信息。为此,我创建了一个带有几个输入字段的应用程序来编写我想要的文件夹名称。编辑模式下一切顺利。
但是当我构建项目并运行创建的“.exe”文件时,它找不到我想要的文本文件。我在下面显示了我用来提取文件的代码。 第一个data.path 是我在编辑器上使用的那个并且运行良好,而第二个(已评论的)data.path 是我试过放置我的文件夹的一个试用版“.exe”数据文件夹。但它不起作用......
data.motion = input_text;
data.subjectName = input_text2;
data.path = "C:/Users/Matias/Desktop/Acquisition_Data/Kinect1/" + data.subjectName + "/" + data.motion + ".txt";
/*data.path = Application.dataPath + "/Acquisition_Data/Kinect1/" + data.subjectName + "/" + data.motion + ".txt";*/
data.lines = System.IO.File.ReadAllLines(data.path);
我无法解释为什么在构建应用程序时这些方法都有效。
我正在使用C#并在Windows10上运行。
答案 0 :(得分:1)
你真的无法做到这一点,因为Unity 将编码文件编码为二进制表单,重命名表单。您必须在构建后移动txt文件,然后才能直接访问它。我昨天回答了类似这样的问题所以我会将链接发布到答案中。做我在下面的答案中提到的事情。
Unity3D loading resources after build
然后删除 Texture2D 内容和替换 File.ReadAllBytes(imagePath);
System.IO.File.ReadAllLines(data.path);
,这应该可行。
答案 1 :(得分:0)
这是使用相对路径或使用绝对路径的问题。 如果绝对路径不起作用,请尝试相对路径。 例如。 ../ name.txt
将您的name.txt放在资产中或您可以指向的地方。
答案 2 :(得分:0)
如果您的文本是静态的(永远不会更多,永远不会更少),那么您只需使用TextAsset:http://docs.unity3d.com/ScriptReference/TextAsset.html