Unity3D:构建项目时查找文件夹路径

Unity3D: Finding folder path when Building the project

我正在从不同文件夹中的几个文本文件中提取一些信息。为此,我创建了一个带有多个输入字段的应用程序来写入我想要去的文件夹的名称。在编辑器模式下一切顺利。

然而,当我构建项目 和运行 创建“.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);

我无法得到任何解释为什么这些方法在我构建应用程序时有效。

我在 Windows10 上使用 C# 和 运行ning。

这是使用相对路径还是使用绝对路径的问题。 如果绝对路径不起作用,请尝试相对路径。 例如。 ../name.txt

将你的 name.txt 放在资产中或你可以指向的地方。

你真的不能那样做,因为 Unity 将文件编码 二进制 形式并 重命名 他们也是。你必须在构建后移动 txt 文件,然后你才能直接访问它。我昨天回答了类似的问题,所以我会 post link 来回答。做我在下面这个答案中提到的事情。

然后删除 Texture2D 内容并替换 File.ReadAllBytes(imagePath);System.IO.File.ReadAllLines(data.path); 应该可以。

如果您的文本是静态的(不多也不少),那么您可以简单地使用 TextAsset:http://docs.unity3d.com/ScriptReference/TextAsset.html

  1. 从文本资源制作预制件;
  2. 将预制件放入您的场景中;
  3. 让用户从什么预制件加载文本。