我如何将 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 中。
我想将单个 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 中。