本文可直接解析本地json信息的功能示例,使用JSONObject和JsonUtility两种方法。
一种使用UnityWebRequest的方法(搭配JSON插件为JSONObject)
一种使用File文件读取方法(搭配Unity自带的JsonUtility)
UnityWebRequest方法
JSONObject需要插件支持,不过可以在Assets Store中找到,直接搜索JSONObject就可以。
因为我开的Unity有点多,所以我选择添加到我的资源然后找到相应的Unity里在Package Manager里选择添加。只打开一个Unity可以直接选择加入到Unity里
需要在Unity里创建文件夹StreamingAssets然后把Json文件放到文件夹下(文件夹目录可以修改代码完成其他需求的文件夹目录使用)
Json格式也很简单{ "appid": "appid11111111" }
文本中只使用了一个数据作为示例。
然后把代码挂载后运行就可以直接出现了
using System.Collections;
using System.Collections.Generic;
using System.IO;
using Defective.JSON;
using UnityEngine;
using UnityEngine.Networking;
public class JsonParsingExample : MonoBehaviour
{
public string Config = "config.json";
public string appid;
// Start is called before the first frame update
void Start()
{
StartCoroutine(LoadConfig());
}
private IEnumerator LoadConfig()
{
var unityWebRequest = UnityWebRequest.Get(Path.Combine(Application.streamingAssetsPath, Config));
yield return unityWebRequest.SendWebRequest();
if (unityWebRequest.isHttpError || unityWebRequest.isNetworkError)
{
unityWebRequest.Dispose();
Debug.Log("No config, try default ...");
yield break;
}
var data = unityWebRequest.downloadHandler?.text;
JSONObject _configJson = new JSONObject(data);
unityWebRequest.Dispose();
if (!string.IsNullOrWhiteSpace(_configJson["appid"].stringValue)) appid = _configJson["appid"].stringValue;
}
}
第二种不需要前期配置,是用的是Unity自带的JsonUtility
using System.Collections;
using System.Collections.Generic;
using System.IO;
using Defective.JSON;
using UnityEngine;
using UnityEngine.Networking;
[SerializeField]
public class JsonUtilityUrl
{
public string appid;
}
public class JsonParsingExample : MonoBehaviour
{
public string Config = "config.json";
public string appid;
// Start is called before the first frame update
void Start()
{
string _path = Path.Combine(Application.streamingAssetsPath, Config);
if (File.Exists(_path))
{
string jsonContent = System.IO.File.ReadAllText(_path);
JsonUtilityUrl urldata = JsonUtility.FromJson<JsonUtilityUrl>(jsonContent);
if (urldata.appid != string.Empty)
appid = urldata.appid;
Debug.Log("TokenUrl" + appid);
}
}
}
本文内容可直接使用,后期扩展。非常简单。