在Android上的文件夹中迭代和读取文本文件

时间:2018-08-03 15:07:24

标签: unity3d

我在Unity中为Android开发了一款文字游戏应用,其中玩家必须从先前加载到游戏中的类别中找到一个单词。

我加载类别的方式是: 在Assets中有一个名为Categories的文件夹,我浏览该文件夹并读取每个文本文件作为一个类别。

类别存储在字典中,其中的键是文件的名称,值是作为数组元素的文件的每一行。

它在PC上运行良好,但是在Android上却没有运气。尝试将路径更改为 “公共字符串类别DirectoryPath = Application.persistentDataPath +”类别“;”仍然不起作用。

原始路径为“资产/类别”

使用文件值初始化字典的代码是(发生在GameManager的Awake()上):

 private Dictionary<string, string[]> createCategories(string directoryPath)
    {
        Dictionary<string, string[]> categories = new Dictionary<string, string[]>();
        string[] categoryPaths = Directory.GetFiles(directoryPath);
        foreach (string path in categoryPaths)
        {
            if (!path.EndsWith("meta")) {
                Debug.Log(path);
                string categoryName = Path.GetFileNameWithoutExtension(path);
                Debug.Log(categoryName);
                string[] categoryData = File.ReadAllLines(path).ToArray();
                categories.Add(categoryName, categoryData);
            }
        }
        return categories;
    }

构建APK后,是否有办法迭代文件夹并读取资产/类别中的文本文件?

1 个答案:

答案 0 :(得分:2)

  

有没有一种方法可以遍历文件夹并读取文本文件,   构建APK后进入了资产/类别?

否。

如果要从项目进行访问,在构建中,有两个选择:

1 。将文件放入名为“ Resources”的文件夹,然后使用“ Resources”读取文件并将其复制到Application.persistentDataPath路径。通过将其复制到Application.persistentDataPath,就可以对其进行修改。 “资源”中的所有内容均为只读。

2 。将文件放在StreamingAssets文件夹中,然后使用UnityWebRequestWWWSystem.IO.File API进行读取。做到这一点,您可以将其复制到Application.persistentDataPath

Here是一则帖子,其中包含有关如何执行这两种代码的代码示例。


3 .AssetBundle(由于性能和加载原因而推荐)。

您可以将文件构建为AssetBundle,然后将其放在StreamingAssets文件夹中,并使用AssetBundle API进行读取。

Here是用于构建和读取AssetBundle数据的完整示例。