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"}

     }

这里直接贴出脚本代码:

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函数来测试读取是否正确。(很久了,大概是这个样子,具体的以代码为准)~~

Unity基础 用C#脚本读取JSON文件数据,布布扣,bubuko.com

时间: 2024-12-28 11:18:53

Unity基础 用C#脚本读取JSON文件数据的相关文章

Echarts-echart和springMVC实现堆栈图(读取JSON文件数据)

这篇echarts的堆栈图主要是根据这篇D3.js堆栈图(http://blog.csdn.net/u013147600/article/details/46770415 )实现的. 效果图: 1.JSON文件数据: { "name":"某市2005-1010年利润情况", "product": [ { "name": "PC" , "sales": [ { "year&quo

jqery ajax读取json文件

json文件数据 [ {"name":"哈哈··","email":"邮箱01","gender":"男","hobby":["上网","打球"]}, {"name":"呵呵··","email":"邮箱02","gender":

转载:java基础学习总结——java读取properties文件总结

java基础学习总结--java读取properties文件总结 一.java读取properties文件总结 在java项目中,操作properties文件是经常要做的,因为很多的配置信息都会写在properties文件中,这里主要是总结使用getResourceAsStream方法和InputStream流去读取properties文件,使用getResourceAsStream方法去读取properties文件时需要特别注意properties文件路径的写法,测试项目如下: 1.1.项目的

Python 读取json文件

创建json文件: 1 { 2 "fontFamily": "微软雅黑", 3 "fontSize": 12, 4 "BaseSettings":{ 5 "font":1, 6 "size":2 7 } 8 } 读取json文件: 1 import json 2 3 def loadFont(): 4 f = open("Settings.json", encodin

读取JSON文件并 排序,分组,

读取.json文件 public string GetFileJson(string filepath) { string json = string.Empty; using (FileStream fs = new FileStream(filepath, FileMode.Open, System.IO.FileAccess.Read, FileShare.ReadWrite)) { using (StreamReader sr = new StreamReader(fs, Encodin

Loadrunner脚本读取 XMl 文件

Loadrunner脚本读取 XMl 文件 性能测试工程师要懂代码么?答案是必须的,好多测试员认为在 loadrunner 中编写脚本很难很牛 X . 好多人认为 loadrunner 只支持 C 语言(包括我之前也一直这么认为),因为 loadrunner 默认的脚本是 C 语言的,其实它支持目前所有主流的语言,如: Java User . VB User . VB script User  . Javascript User . Mmicrosoft .NET 等,总有一款适合你的吧,最起码

接口自动化(三)--读取json文件中的数据

上篇讲到实际的请求数据放置在json文件内,这一部分记述一下python读取json文件的实现. 代码如下(代码做了简化,根据需要调优:可做一些容错处理): 1 import json 2 3 class operateJson(): 4 def __init__(self,jsonPath=None): 5 self.jsonPath = jsonPath #传入json文件路径 6 7 #读取json文件的内容 8 def readJson(self): 9 with open(self.j

八、Delphi10.3读取JSON文件,并修改JSON数组一条内容后保存到文件

一.我们有一个JSON文件,如下: { "在野": [ { "城池": 0, "武将": 74, "登场年": 190 }, { "城池": 0, "武将": 11, "登场年": 208 }, { "城池": 29, "武将": 78, "登场年": 198 } ], "跟随": [ {

【赵强老师】在Spark SQL中读取JSON文件

Spark SQL是Spark用来处理结构化数据的一个模块,它提供了一个编程抽象叫做DataFrame并且作为分布式SQL查询引擎的作用.为什么要学习Spark SQL?如果大家了解Hive的话,应该知道它是将Hive SQL转换成MapReduce然后提交到集群上执行,大大简化了编写MapReduce的程序的复杂性,由于MapReduce这种计算模型执行效率比较慢.所以Spark SQL的应运而生,它是将Spark SQL转换成RDD,然后提交到集群执行,执行效率非常快!同时Spark SQL