【问题标题】:How read json from Unity StreamingAssets, Android [duplicate]如何从 Unity StreamingAssets,Android 读取 json [重复]
【发布时间】:2023-04-08 13:18:01
【问题描述】:

如何从 StreamingAssets 读取 json for android app?

对于我阅读此代码的 iOS,

public void ReadJson(){
        string path = "/Raw/elements.json";
        #if UNITY_EDITOR
        path = "/StreamingAssets/elements.json";
        #endif
        string json = File.ReadAllText(Application.dataPath + path);
        itemsContent = JsonUtility.FromJson<Main> (json); 
        bundleForPing = itemsContent.bundleID;
    }

但是如何为 android 阅读...请帮助

【问题讨论】:

  • 不重复!
  • unity for Android App...

标签: c# android json unity3d


【解决方案1】:

基于此Manual

在 Android 上,这些文件包含在一个压缩的 .jar 文件中(其格式与标准 zip 压缩文件的格式基本相同)。这意味着如果你不使用 Unity 的 WWW 类来检索文件,你需要使用额外的软件来查看 .jar 存档内部并获取文件。

public void ReadJson(){
        string path = Application.streamingAssetsPath + "/elements.json";
        #if UNITY_EDITOR
        path = "/StreamingAssets/elements.json";
        #endif
        WWW www = new WWW(path);
        while(!www.isDone) {}
        string json = www.text;
        itemsContent = JsonUtility.FromJson<Main> (json); 
        bundleForPing = itemsContent.bundleID;
    }

【讨论】:

  • 我不是专家,但我确信我读过一些关于 WWW 问题的文章,包括内存问题。在花了一些时间寻找基于上下文使用“异常”的替代方法后,这增加了 IMO 不必要的复杂性,我发现了这个插件 assetstore.unity.com/packages/tools/input-management/… 然后你可以做这样的事情:code BetterStreamingAssets.Initialize(); MyConfigClassInstance = JsonUtility.FromJson(BetterStreamingAssets.ReadAllText("config_file.json"));
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-10
  • 2020-10-21
  • 2017-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多