zoukankan      html  css  js  c++  java
  • 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函数来测试读取是否正确。(很久了,大概是这个样子~~)

  • 相关阅读:
    反汇编测试20191325
    20191325mystat
    20191325学习笔记8
    20191325学习笔记7
    2.3.1测试 20191325
    20191214-改进ls
    团队作业4
    20191214-反汇编测试
    stat命令的实现-mysate(必做)
    图片
  • 原文地址:https://www.cnblogs.com/vitah/p/3861350.html
Copyright © 2011-2022 走看看