我在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后,是否有办法迭代文件夹并读取资产/类别中的文本文件?
答案 0 :(得分:2)
有没有一种方法可以遍历文件夹并读取文本文件, 构建APK后进入了资产/类别?
否。
如果要从项目进行访问,在构建中,有两个选择:
1 。将文件放入名为“ Resources”的文件夹,然后使用“ Resources”读取文件并将其复制到Application.persistentDataPath
路径。通过将其复制到Application.persistentDataPath
,就可以对其进行修改。 “资源”中的所有内容均为只读。
2 。将文件放在StreamingAssets文件夹中,然后使用UnityWebRequest
,WWW
或System.IO.File
API进行读取。做到这一点,您可以将其复制到Application.persistentDataPath
。
Here是一则帖子,其中包含有关如何执行这两种代码的代码示例。
3 .AssetBundle(由于性能和加载原因而推荐)。
您可以将文件构建为AssetBundle,然后将其放在StreamingAssets文件夹中,并使用AssetBundle
API进行读取。
Here是用于构建和读取AssetBundle数据的完整示例。