位置: 编程技术 - 正文

UNITY3D 使用 litjson 制作数据表(unity3d应用)

编辑:rootadmin

推荐整理分享UNITY3D 使用 litjson 制作数据表(unity3d应用),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:unity3d怎么样,unity3d怎么样,unity3d怎么样,unity lib,unity3d基本操作,unity中litjson,unity中litjson,unity3d基本操作,内容如对您有帮助,希望把文章链接给更多的朋友!

距离上一次更新博客已有一段时间了,一实习就懒了,嘿嘿。这次谈一下在实习里新碰到的一个Unity插件——LitJson(也可以去官网下载最新版)。

开场白

LitJson是一个开源项目,比较小巧轻便,安装也很简单,在Unity里只需要把LitJson.dll放到Plugins文件夹下,并在代码的最开头添加 “Using LitJson”就可以了。简单来说,LitJson的用途是实现Json和代码数据之间的转换,一般用于从服务器请求数据,得到返回的Json后进行转换从而在代码里可以访问。具体请详见LitJson的官网。

关于和服务器数据之间的转换在此就不再赘述,官网以及一些博客里已有涉及,而且也比较详细了。

这里,主要谈一下LitJson的其他用途。

想象一个场景,你需要显示一个家庭信息的表&#;,这个表&#;的每一行代表了你的一个家人的名字、年龄、手机号码和住址等信息。因为这个信息不大,用数据库实在是大材小用,而且也很麻烦。

我们可以用一个数据结构来在代码里表示每个家人的信息:

[csharp] view plaincopyprint?public class FamilyInfo { public string name; public int age; public string tellphone; public string address; } 然后用一个List来表示家庭信息表:[csharp] view plaincopyprint?public class FamilyList { public List<FamilyInfo> family_list; } 最后,打印信息:[csharp] view plaincopyprint?private void DisplayFamilyList(FamilyList familyList) { if (familyList == null) return; foreach (FamilyInfo info in familyList.family_list) { Debug.Log("Name:" &#; info.name &#; " Age:" &#; info.age &#; " Tel:" &#; info.tellphone &#; " Addr:" &#; info.address); } } UNITY3D 使用 litjson 制作数据表(unity3d应用)

准备工作都已经做好,那么数据到底在什么时候初始化呢?

第一种方法

一种方法是我们可以在编辑面板里直接初始化。为了达到目的,我们还需要告诉Unity编辑器在面板里显示我们的FamilyInfo,以便我们可以随机编辑,这是通过在类名前声明

[System.Serializable]来实现的。

具体代码如下:

[csharp] view plaincopyprint?sing System.Collections; using System.Collections.Generic; using LitJson; [System.Serializable] public class FamilyInfo { public string name; public int age; public string tellphone; public string address; } [System.Serializable] public class FamilyList { public List<FamilyInfo> family_list; } public class LitJsonSample : MonoBehaviour { public FamilyList m_FamilyList = null; // Use this for initialization void Start () { DisplayFamilyList(m_FamilyList); } private void DisplayFamilyList(FamilyList familyList) { if (familyList == null) return; foreach (FamilyInfo info in familyList.family_list) { Debug.Log("Name:" &#; info.name &#; " Age:" &#; info.age &#; " Tel:" &#; info.tellphone &#; " Addr:" &#; info.address); } } // Update is called once per frame void Update () { } }

运行结果如下:

但是这种方法灵活性太差,而且很容易发生错误。例如当我们不小心改变了变量名称,那么我们在面板里编辑好的数据就都会不见了!下面介绍另一种比较好的方法——把数据保存为本地的一个文本文件。

第二种方法正如前面所说,我们把信息存成一个表&#;,并保存为txt&#;式。注意,为了能使用LitJson解析,txt中必须使用Json&#;式。family.txt如下:[plain] view plaincopyprint?{ "family_list": [ { "name" : "candycat", "age" : , "tellphone" : "xxx", "address" : "xxx" }, { "name" : "candycat#", "age" : , "tellphone" : "xxx", "address" : "xxx" }, { "name" : "candycat##", "age" : , "tellphone" : "xxx", "address" : "xxx" } ] } 代码如下:[csharp] view plaincopyprint?using UnityEngine; using UnityEditor; using System.Collections; using System.Collections.Generic; using LitJson; public class FamilyInfo { public string name; public int age; public string tellphone; public string address; } public class FamilyList { public List<FamilyInfo> family_list; } public class LitJsonSample : MonoBehaviour { public FamilyList m_FamilyList = null; // Use this for initialization void Start () { ReloadFamilyData(); DisplayFamilyList(m_FamilyList); } private void ReloadFamilyData() { UnityEngine.TextAsset s = Resources.Load("Localize/family") as TextAsset; string tmp = s.text; m_FamilyList = JsonMapper.ToObject<FamilyList>( tmp ); if ( JsonMapper.HasInterpretError() ) { Debug.LogWarning( JsonMapper.GetInterpretError() ); } } private void DisplayFamilyList(FamilyList familyList) { if (familyList == null) return; foreach (FamilyInfo info in familyList.family_list) { Debug.Log("Name:" &#; info.name &#; " Age:" &#; info.age &#; " Tel:" &#; info.tellphone &#; " Addr:" &#; info.address); } } // Update is called once per frame void Update () { } } 有几点注意的地方:Resources.Load("Localize/family")表示加载family文件,但一定要注意要把family.txt文件放在Resources文件夹下,只有这样Resources.Load才能够访问到,在这个例子里family的绝对路径为“Resources/Localize/family”。这是因为Resources文件夹是Unity默认的资源文件夹,有着特殊的用途,这里我还不是很了解,以后要深入学习一下;Resources.Load参数中的路径名一定不可以包含后缀,这里也就是.txt后缀;输出结果和第一种方法完全一样。注意使用LitJson解析时,解析类(如上面的FamilyInfo)若包含Dictionary结构,则key的类型必须是string,而不能是int类型(如需表示id等),否则无法正确解析!若需要小数,要使用double类型,而不能使用float,可后期在代码里再显式转换为float类型。这里修改了一份支持float类型的代码:

unity3d中用四元数 Quaternion来对一个坐标点进行旋转的初步体会 在unity3d中,用四元数来表示旋转,四元数英文名叫quaternion.比如transform.rotation就是一个四元数,其由四个部分组成Quaternion=(xiyjzkw)=(x,y,z,w)1.

Unity子对象获取父对象 GameObjecttitleFrame=itemNameLabel.gameObject.transform.parent.gameObject;titleFrame.transform.localPosition=_titleFramePosition_Others;

噩梦系列篇之Player随鼠标转向控制 接下来player应该跟随鼠标的移动而确定方向了;首先要确定环境所在层;现在的环境就是Ground。。。把他的layer设置为Ground。。。。。接下里就是代码时

标签: unity3d应用

本文链接地址:https://www.jiuchutong.com/biancheng/382550.html 转载请保留说明!

上一篇:Unity3d的导入资源的后处理管理机制(unity2020怎么导入资源)

下一篇:unity3d中用四元数 Quaternion来对一个坐标点进行旋转的初步体会

  • 配件销售过程中有什么注意事项
  • 农产品加工会计分录
  • 公司买手表账务处理
  • 建筑企业印花税的计税依据
  • 受托代销商品和受托代销商品款怎么列示
  • 养老失业工伤单位一般缴纳多少钱
  • 代收税款
  • 未分配利润借方表示增加还是减少
  • 高新企业季度企业所得税预征税率
  • 收到社会保险基金管理局转来的失业保险金,社保代发
  • 残保金超比例奖励
  • 海关进口需要什么手续
  • 进销项税额的会计分录
  • 计提附加税的会计处理
  • 小规模纳税人自开专票
  • 收取技术服务费
  • 小规模季度划分
  • 建筑企业预收的工程款会计分录
  • 公司周年庆典费用计入什么科目
  • 收到运费怎么做账
  • 坏账准备年末结账要结清吗
  • 餐饮研发费用确认条件
  • 非营利性组织收到政府拨款转出给其他部门怎么做账
  • 多源传感器融合
  • 计提利息会计分录怎么做
  • 让渡资产使用权包含哪些内容
  • 黑色金属冶炼压延品的税收编码是多少
  • bert获取中文词向量
  • 项目费用怎么入账
  • Code For Better 谷歌开发者之声——使用谷歌浏览器 Chrome 更好地调试
  • 拦截器拦截html
  • taskset 绑定cpu
  • 工会经费怎么上缴
  • 贷款需要考虑什么
  • 工会经费是公司交还是个人交
  • 汇兑损益的会计处理原则
  • 电子票开票人复核人一样有影响吗
  • 哪些费用专票是免税的
  • 银行日记账期初余额写哪儿
  • 个税申报汇算清缴流程
  • 本期数值与去年同期数值之差称为什么
  • 企业增资会计科目
  • 企业非正常损失如何处理
  • 不征税收入怎么做会计分录
  • 工资能否当月计提当月发放
  • 冲销上年多计提费用
  • 事业单位劳务派遣是啥意思
  • 未抵扣进项税额什么意思
  • 预付款已经开了发票未到货要怎么做账
  • 进项认证怎么算
  • 固定资产怎么做账
  • 非营利性代收代缴税款
  • 长期股权投资权益法账务处理
  • 教材出版 技术咨询服务费
  • 公司开办期间的住宿费会计分录
  • 收到税务局汇算清缴退所得税怎么做账
  • mssql server 2012(SQL2012)各版本功能对比
  • sql查询包含特殊
  • 在linux系统中安装软件
  • u盘界面可以设置背景吗
  • RSync文件备份同步 Linux服务器rsync同步配置图文教程
  • win7系统压缩包
  • assoc .exe=exefile是什么
  • 磁盘清理win10
  • win102020h2版本
  • 在linux系统中有一个重要的概念
  • cocos2dx官方教程
  • asp.net 4.8
  • nodejs获取异步请求返回值
  • unity3d开发之对象池
  • 基于python的研究
  • python解决方案与程序有什么不同
  • 辽宁地方税务局发票查询
  • 四川纳税互动平台app
  • 消费税由谁来承担
  • 加拿大移民知乎
  • 重庆地方税务局2016年2号
  • 统一社会信用代码证
  • 一般纳税人资格是什么意思
  • 建筑业统一发票税率
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设