距离上一次更新博客已有一段时间了,一实习就懒了,嘿嘿。这次谈一下在实习里新碰到的一个Unity插件——LitJson(也可以去官网下载最新版)。
版权声明:本文为博主原创文章,未经博主允许不得转载。[因为博主不允许转载,博主看到请原谅我,主要是你写的太好了]
LitJson是一个开源项目,比较小巧轻便,安装也很简单,在Unity里只需要把LitJson.dll放到Plugins文件夹下,并在代码的最开头添加 “Using LitJson”就可以了。简单来说,LitJson的用途是实现Json和代码数据之间的转换,一般用于从服务器请求数据,得到返回的Json后进行转换从而在代码里可以访问。具体请详见LitJson的官网。
关于和服务器数据之间的转换在此就不再赘述,官网以及一些博客里已有涉及,而且也比较详细了。
这里,主要谈一下LitJson的其他用途。
想象一个场景,你需要显示一个家庭信息的表格,这个表格的每一行代表了你的一个家人的名字、年龄、手机号码和住址等信息。因为这个信息不大,用数据库实在是大材小用,而且也很麻烦。
我们可以用一个数据结构来在代码里表示每个家人的信息:
[csharp] view plain copy print ? public class FamilyInfo { public string name; public int age; public string tellphone; public string address; } 然后用一个List来表示家庭信息表: [csharp] view plain copy print ? public class FamilyList { public List family_list; } 最后,打印信息: [csharp] view plain copy print ? 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); } }准备工作都已经做好,那么数据到底在什么时候初始化呢?
一种方法是我们可以在编辑面板里直接初始化。为了达到目的,我们还需要告诉Unity编辑器在面板里显示我们的FamilyInfo,以便我们可以随机编辑,这是通过在类名前声明
[System.Serializable]来实现的。
具体代码如下:
[csharp] view plain copy print ? 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 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 () { } } 运行结果如下:但是这种方法灵活性太差,而且很容易发生错误。例如当我们不小心改变了变量名称,那么我们在面板里编辑好的数据就都会不见了!下面介绍另一种比较好的方法——把数据保存为本地的一个文本文件。