json加载不在构建中工作,但在统一编辑器中工作

时间:2017-06-10 14:53:24

标签: c# android json unity3d

当我在Android上构建时,我的json文件似乎无法加载,因为我没有看到数据。在统一编辑器播放它工作正常。我正在努力解决在PC上工作但在Android上工作的问题。我想这只是路径差异,但初学者并不容易。

这是我的代码TRY 1:

public static JsonData LoadFile(string path)
{
    var fileContents = File.ReadAllText(path);
    var data = JsonMapper.ToObject(fileContents);
    return data;
}

public void QuestionLoader()
{
    // Load the Json file and store its contents in a 'JsonData' variable
    var data = LoadFile(Application.dataPath + "/Resources/json/level1.json");

以下是我的尝试2 - 基于Unity手册 - https://docs.unity3d.com/Manual/StreamingAssets.html

   public static JsonData LoadFile(string path)
{

    var www = new WWW(path);
    return www.text;

    //var fileContents = File.ReadAllText(path);
   // var data = JsonMapper.ToObject(fileContents);
   // return data;
}

public void QuestionLoader()
{
    string path = "";
    // Load the Json file and store its contents 
    #if UNITY_ANDROID

    path = "jar:file://" + Application.dataPath + "!/assets/Levels/level1.json";

    #endif

    #if UNITY_EDITOR

    path = Application.dataPath + "/StreamingAssets/Levels/level1.json";

    #endif
    //
    var data = LoadFile(path);

1 个答案:

答案 0 :(得分:1)

如果要从任何平台加载项目中已存在的json,您有两个选择:

1 。在资源文件夹中输入Json文件,然后使用Resources.Load将其作为TextAsset读取。例如,请参阅this答案的结尾。

2 。将json文件设为AssetBundle,然后使用WWW.LoadFromCacheOrDownload加载它。

其中任何一个都应该有用。读取json文件后,可以直接将其复制到Application.persistentDataPath,这样您就可以对其进行修改并在需要时保存。