【问题标题】:Read external files from resources Unity从 Unity 资源中读取外部文件
【发布时间】:2019-02-06 23:06:35
【问题描述】:

我正在使用 Unity 在 VR 中开发应用程序,我需要读取插入用户的文件名,以便在应用程序中上传以及其他 2-3 个用户始终可以选择的选项。我曾想过在其中放置数据的初始菜单,但这对于 VR 解决方案来说并不实用。所以我想创建一个“设置”文件,用户在启动应用程序之前插入选项、名称和从中加载数据的文件的路径。但我不知道如何读取 Unity 项目资源之外的文件。另外,如何创建此文件设置,以便在构建项目后它始终位于同一位置并且在 EXE 文件夹中可见?有人知道如何帮助我吗?或者也许给我一些关于如何进行的建议?提前致谢。

【问题讨论】:

    标签: unity3d


    【解决方案1】:

    欢迎来到堆栈!

    我想您正在创建基于桌面的游戏?对于您的情况,我建议使用StreamingAsset folder 来存储配置文件。当您构建游戏时,它将被放置在<BuildFolder>/<GameName>_Data/StreamingAssets

    对于加载文件,您可以使用 C# 的许多不同的 System.IO 类中的任何一个,将文件内容作为文本读取的简单方法可能是这样的:

          var path = Application.dataPath + "/StreamingAssets/settings.txt";
          using (StreamReader reader = new StreamReader(path))
          {
            try
            {
              var fileContent = reader.ReadToEnd();
              /* do something with the content here */
            }
            catch (System.Exception e)
            {
              Debug.Log(e);
            }
          }
    

    我认为对您的情况更友好的另一种方法是使用FileBrowserasset 之类的东西,它允许用户以无键盘方式选择文件。我不知道它是否适用于 VR。

    【讨论】:

    • 非常感谢您的建议。第一个解决方案应该可以完美运行,因为用户将读取该文件,然后系统会读取该文件。
    • 很高兴看到它有帮助。如果您确认解决方案有效,请接受我的回答以帮助以后的用户:)
    • 当然,一旦我测试过我会留下反馈:-)
    • 您应该更喜欢 persistentDataPath 来存储例如设置This value is a directory path where you can store data that you want to be kept between runs. When you publish on iOS and Android, persistentDataPath points to a public directory on the device. Files in this location are not erased by app updates.,因为streamingAssets 通常是只读的,并且在某些平台(webgl、Android)上甚至没有 100% 支持。 It is not possible to access the StreamingAssets folder on WebGL and Android platforms. No file access is available on WebGL.
    • 当然,但persistentDataPath 不在构建文件夹中,因为操作需要,在桌面构建中它位于非常奇怪的地方。
    猜你喜欢
    • 1970-01-01
    • 2013-12-08
    • 1970-01-01
    • 1970-01-01
    • 2019-12-20
    • 2016-06-17
    • 1970-01-01
    • 2021-11-21
    相关资源
    最近更新 更多