zoukankan      html  css  js  c++  java
  • U3D Json

     //写入json文档
    注意事项:

    1、在Asset下要有一个StreamingAssets文件夹
    2、在文件夹内,有一个已创建好的json空文档
    3、引入命名空间 using Litjson; using System; using System.IO;
    4、创建英雄和技能类

    Demo所需要的命名空间:

    [Serializable]
    class Hero
    {
        public string HeroName;
        public string Hp;
        public string Attack;
        public List<Skill> Skills = new List<Skill> ();
    }
    
    [Serializable]
    class Skill
    {
        public string keyCode;
        public string Name;
        public string CD;
        public string MP;
    }
    
    void CreatJson ()
        {
            JsonData nuoke = new JsonData ();
            nuoke ["HeroName"] = "诺克";
            nuoke ["HP"] = 1000;
            nuoke ["Attack"] = 550;
            nuoke ["Skills"] = new JsonData ();
    
            //一技能:大杀四方
            JsonData skill1 = new JsonData ();
            skill1 ["keyCode"] = "Q";
            skill1 ["Name"] = "大杀四方";
            skill1 ["CD"] = "9/8/7/6/5";
            skill1 ["MP"] = "30";
    
            //二技能:致残打击
            JsonData skill2 = new JsonData ();
            skill2 ["keyCode"] = "W";
            skill2 ["Name"] = "致残打击";
            skill2 ["CD"] = "9/8/7/6/5";
            skill2 ["MP"] = "30";
    
            //三技能:无情铁手
            JsonData skill3 = new JsonData ();
            skill2 ["keyCode"] = "E";
            skill2 ["Name"] = "无情铁手";
            skill2 ["CD"] = "24/21/18/15/12";
            skill2 ["MP"] = "30";
    
            //大招:诺克萨斯断头台
            JsonData skill4 = new JsonData ();
            skill2 ["keyCode"] = "R";
            skill2 ["Name"] = "诺克萨斯断头台";
            skill2 ["CD"] = "120/100/80";
            skill2 ["MP"] = "100/100/0";
    
            //将生成的技能对象放到诺克的技能中
            nuoke ["Skills"].Add (skill1);
            nuoke ["Skills"].Add (skill2);
            nuoke ["Skills"].Add (skill3);
            nuoke ["Skills"].Add (skill4);
    
            //将生成的对象转化成json文档
            string json = JsonMapper.ToJson (nuoke);
            //将json写入到文件
            string path = Application.streamingAssetsPath + "/Nuoke.json";
            StreamWriter sw = new StreamWriter (path);
            sw.Write (json);
            sw.Close ();
        }
    
    //解析json
        void PraseJson ()
        {
            FileInfo file = new FileInfo (Application.dataPath + "/StreamingAssets/Nuoke.json");
            StreamReader reader = new StreamReader (file.OpenRead (), Encoding.UTF8);
            string content = reader.ReadToEnd ();
            reader.Close ();
            reader.Dispose ();
            JsonData nuokeData = JsonMapper.ToObject (content);
            m_text.text = "英雄:" + nuokeData ["HeroName"] + "
    ";
            //通过JsonData对象访问数据
            for (int i = 0; i < nuokeData ["Skills"].Count; i++) {
                m_text.text += "技能:" + nuokeData ["Skills"] [i] ["Name"] + "
    技能键:	" +
                nuokeData ["Skills"] [i] ["keyCode"] + "
    CD:	" +
                nuokeData ["Skills"] [i] ["CD"] + "
    MP:	" + nuokeData ["Skills"] [i] ["MP"] + "
    ";
            }
        }

    写入Json的中文会默认转化为UTF-8编码格式,在解析时,只需转换格式即可

    unity3d使用litjson中文显示的问题 ,一下代码选至(https://www.cnblogs.com/fyluyg/p/5963052.html)
      我们在使用litjson时它的编码方式是unicode的,所以我将json转成string输出时显示的是unicode的编码。这样我们显示或者保存中文时不是很方便。我们可以将中文的unicode转成能识别的GBK编码。
    
     1 using UnityEngine;
     2 using System.Collections.Generic;
     3 using Utils;
     4 using LitJson;
     5 using System;
     6 using System.Text.RegularExpressions;
     7 
     8 public class Script1 : MonoBehaviour
     9 {
    10     public void OnTestJson()
    11     {
    12         JsonData sData = new JsonData();
    13         JsonData data1 = new JsonData();
    14         JsonData data2 = new JsonData();
    15 
    16         data1["等级"] = "54";
    17         data1["位置"] = "m=1000,x=33,y=21";   //新手村
    18 
    19         data2["等级"] = "56";
    20         data2["位置"] = "m=1001,x=58,y=97";   //桃园镇
    21 
    22         sData["张三"] = data1;
    23         sData["李四"] = data2;
    24 
    25         string jsonStr = sData.ToJson();
    26 
    27         Regex reg = new Regex(@"(?i)\[uU]([0-9a-f]{4})");
    28         var ss = reg.Replace(jsonStr, delegate(Match m) { return ((char)Convert.ToInt32(m.Groups[1].Value, 16)).ToString(); });
    29 
    30 
    31         print(ss);
    32     }
    33 }
  • 相关阅读:
    二进制,八进制,十进制,十六进制之间的转换
    Ajax
    JSP
    事务
    BDUtils
    LG. 1003 铺地毯
    Educational Codeforces Round 25
    POJ.3268 Silver Cow Party (Dijkstra)
    POJ.1797 Heavy Transportation (Dijkstra变形)
    POJ. 2253 Frogger (Dijkstra )
  • 原文地址:https://www.cnblogs.com/zpy1993-09/p/11793401.html
Copyright © 2011-2022 走看看