Unity 用C#腳本讀取JSON文件數據


  讀取JSON文件數據網上有很多方法嗎,這里采用SimpleJSON,關於SimpleJSON的介紹參考以下鏈接:http://wiki.unity3d.com/index.php/SimpleJSON,使用之前要先導入SimpleJSON的相關文件。

JSON文件名:achieve.json,文件內容:

{

"30002":{"achieve_id":30002,"achieve_name":"連勝","achieve_race":3,"achieve_type":41,"achieve_des":"排位賽連續勝利10場","achieve_gold":20,"achieve_times":10,"image":"athletics_2"},
"30003":{"achieve_id":30003,"achieve_name":"百戰百勝","achieve_race":3,"achieve_type":41,"achieve_des":"排位賽連續勝利100場","achieve_gold":100,"achieve_times":100,"image":"athletics_3"},
"30004":{"achieve_id":30004,"achieve_name":"不屈","achieve_race":3,"achieve_type":42,"achieve_des":"排位賽連續失敗10場","achieve_gold":5,"achieve_times":10,"image":"athletics_4"}

     }
View Code

這里直接貼出腳本代碼:

ConfigAchieve類代碼:

using UnityEngine;
using System.Collections;

using SimpleJSON;

public class ConfigAchieve
{
    private Hashtable hash = new Hashtable();  

    // 從Json文件中載入信息保存至Hashtable
    public void loadFromJson(JSONNode data)
    {
        if (data == null)
            Debug.Log("read faild");
        else
        {
            for(int i=0 ; i<data.Count; i++)
            {
                ConfigAchieveItem node = new ConfigAchieveItem();

                node.Id = data [i] ["achieve_id"];
                node.Name = data [i] ["achieve_name"];
                node.Race = data [i] ["achieve_race"];
                node.Type = data [i] ["achieve_type"];
                node.Des = data [i] ["achieve_des"];
                node.Gold = data [i] ["achieve_gold"];
                node.Times = data [i] ["achieve_times"];
                node.Image = data [i] ["image"];

                hash.Add(node.Id, node); 
            }
        }
    }

    // 從Hashtable中返回鍵為key的值
    public ConfigAchieveItem GetItem(string key)
    { 
        ConfigAchieveItem itemAchieve = (ConfigAchieveItem)hash[key];
        return itemAchieve;
    }
}
ConfigAchieve

ConfigAchieveItem類代碼:

using System;
using SimpleJSON;

public class ConfigAchieveItem
{
    private string _configId = "";
    private string _configName = "";
    private string _configRace = "";
    private string _configType = "";
    private string _configDes = "";
    private string _configGold = "";
    private string _configTimes = "";
    private string _configImage = "";

    public string Id
    {
        get { return _configId; }
        set { _configId = value; }
    }
    
    public string Name
    {
        get { return _configName; }
        set { _configName = value; }
    }
    
    public string Race
    {
        get { return _configRace; }
        set { _configRace = value; }
    }
    
    public string Type
    {
        get { return _configType; }
        set { _configType = value; }
    }
    
    public string Des
    {
        get { return _configDes; }
        set { _configDes = value; }
    }
    
    public string Gold
    {
        get { return _configGold; }
        set { _configGold = value; }
    }
    
    public string Times
    {
        get { return _configTimes; }
        set { _configTimes = value; }
    }
    
    public string Image
    {
        get { return _configImage; }
        set { _configImage = value; }
    }

    public void loadDataFromJson(ConfigAchieve achieve, string key)
    {
        ConfigAchieveItem temp = (ConfigAchieveItem)achieve.GetItem(key);

        _configId = temp.Id;
        _configName = temp.Name;
        _configRace = temp.Race;
        _configType = temp.Type;
        _configDes = temp._configDes;
        _configGold = temp.Gold;
        _configTimes = temp.Times;
        _configImage = temp.Image;
    }
}
ConfigAchieveItem

ConfigManager類代碼:

using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
using SimpleJSON;

public class ConfigManager : MonoBehaviour
{
    public ConfigAchieve _config_achieve = new ConfigAchieve();

    // Use this for initialization
    void Start()
    {
        Test(); // 測試函數
    }
    
    // Update is called once per frame
    void Update()
    {   
    }

    // 打開對應路徑的json文件
    public JSONNode jsonFromFile(string filename)
    {
        JSONNode json_object = null;
        TextAsset filePath = (TextAsset)Resources.Load(filename);
        
        if (filePath == null)   // Json文件讀取失敗,打印日志
            Debug.Log("find json file faild!");
        else
            json_object = JSON.Parse(filePath.text);    // 轉為json格式

        return json_object;
    }

    public void Test()
    {
        _config_achieve.loadFromJson(jsonFromFile("Config/achieve"));
        ConfigAchieveItem temp = _config_achieve.GetItem("10001");

        Debug.Log("id = " + temp.Id + " name = " + temp.Name);
        Debug.Log("race = " + temp.Race + " type = " + temp.Type);
        Debug.Log("des = " + temp.Des + " gold = " + temp.Gold);
        Debug.Log("times = " + temp.Times + " image = " + temp.Image);
    }
}
ConfigManager  

  其中ConfigManager用來控制打開json文件,ConfigAchieve用來讀取數據,ConfigAchieveItem用來保存每條數據然后就可以用代碼中的Test函數來測試讀取是否正確。(很久了,大概是這個樣子~~)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM