【问题标题】:Unity3D: Finding folder path when Building the projectUnity3D:构建项目时查找文件夹路径
【发布时间】:2016-07-02 08:15:24
【问题描述】:

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

但是,当我构建项目并运行创建的“.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 上运行。

【问题讨论】:

  • 您只能使用Application.persistentDataPath,仅此而已。永远不要使用其他任何东西。

标签: c# unity3d build load text-files


【解决方案1】:

您确实不能这样做,因为 Unity 将文件编码二进制形式并重命名它们。您必须在构建后移动 txt 文件,然后才能直接访问它。我昨天回答了类似的问题,所以我将发布答案的链接。做我在下面这个答案中提到的事情。

Unity3D loading resources after build

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

【讨论】:

  • 应该是世界。它对我有用,对另一个质疑这个问题的人有用。你可能在某个地方做错了什么。很高兴知道你让它工作了。
  • 我按照您的指示进行操作,但在构建中不起作用。然而,在我将 Acquisition_Data 文件夹移动到 Assets 之后,这个新脚本在编辑器中工作。此外,由于是字节 [] 而不是字符串,因此我无法使用您建议的 ReadAllLines,所以我这样做了:fileBytes = System.IO.File.ReadAllBytes(data.path); 然后是 aux_string = System.Text.Encoding.Default.GetString(fileBytes);,最后是 data.lines = Regex.Split(aux_string, "\r\n");
  • “我不能像你建议的那样使用 ReadAllLines,因为它是字节 [] 而不是字符串,所以我这样做了”。你应该在那里做一些改变,这并不复杂。 ReadAllBytes 也可以,但是由于您在问题中使用了 ReadAllLines,我告诉您将 ReadAllBytes 更改为 ReadAllLines 以获取文本。我仍然认为你把它移到了错误的文件夹,这就是为什么我的方法对你不起作用。你也应该修改 url 并将扩展名更改为 txt。既然你搞定了,那就没什么好说的了。恭喜。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

    1. 利用文本资源制作预制件;
    2. 将预制件放入场景中;
    3. 让用户从哪个预制件中加载文本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-17
      • 2012-04-01
      相关资源
      最近更新 更多