我如何将 Json 文件从 Assets/Resources/ 复制到 Android 设备的内部存储(持久数据)? [团结Android]

How do i copy a Json file from the Assets/Resources/ to the Internal storage of an Android device ( persistent data)? [Unity Android]

我想将单个 json 文件从 Unity's Assets/Resources/ 目录复制到 Android 设备 (INTERNAL STORAGE/Android/data/<packagename>/files/) 的内部持久内存中,仅在 INTERNAL STORAGE/Android/data/<packagename>/files/ 开始时复制一次游戏。我在整个互联网上查找,解决方案说使用 Streaming assets 和 UnityWebRequests 或 WWW class 现在已经过时了。我现在尝试了几个小时的一切。并没有找到确切的解决方案,但只得到空引用和找不到目录。

我将我的 json 文件添加到 <UnityProject>/Assets/Resources/StreamingAssets/,但它似乎没有检测到任何流媒体资产。我知道 apk 是一个 zip 文件,所以我只能读取流媒体资产的内容,但我找不到解决方案。

一旦我从流媒体资产中获得 json,我终于可以将它添加到 Application.persistentDataPath

更新 我其实已经想通了,

     public void LoadFromResources() {
 {mobilePath = "StreamingAssets/"; mobilePath = mobilePath + "stickerJson" + ".json";
 string newPath = mobilePath.Replace(".json", "");
 TextAsset ta = Resources.Load<TextAsset>(newPath);
 string json = ta.text; Debug.Log(json); System.IO.File.WriteAllText(Application.persistentDataPath + "/stickers.json", json);
 }
}

要复制一个文件,你只需要有文件的信息,然后在另一个地方创建一个新的。

因此,如果您将 json 文件放入资源目录,您可以像 documentation 那样检索:

//Load text from a JSON file (Assets/Resources/Text/jsonFile01.json)
var jsonTextFile = Resources.Load<TextAsset>("Text/jsonFile01");
//Then use JsonUtility.FromJson<T>() to deserialize jsonTextFile into an object

然后你只需要在你的 persistentDataPath 中创建你的 android 文件,就像@Iggy 在评论中说的那样:

System.IO.File.WriteAllText(Path.Combine(Application.persistentDataPath, "file.txt"), jsonTextFile);

注意:不太确定,但对于其他情况,我认为 StreamingAssets 文件夹应该在 Assets 中,而不是在 Resources 中。