西部世界
首发于西部世界
unity3d 学习路线-小白到高手(二)游戏篇-数据

unity3d 学习路线-小白到高手(二)游戏篇-数据

Live预告:从0到1:unity3d实践课

------------------------------------------------------------------------------------------------

游戏篇-数据模块 UnityExcelPraser

小白到高手一文章中,我大概的给出了一个系统的u3d知识框架和学习路线脑图。

现在我有些后悔,因为题目太大了,如果每一点都讲的话估计容易不深入,所以经过深思决定来最快的实践讲解方式,相信现在大部分做技术的人都明白,不停的实践会是最快的学好一个项目的关键。到这里就应该选择应该给大家实践一个什么样的demo才能让大家迅速入门并且不是特别的难,很多时候往往进行不下去的是懵X了,demo太难,学习时间太长,太考验读者的坚持能力,而且现在一般做项目也是遇到什么问题就搜解决方案。

写到这里,我在想我这篇教程的读者应该是谁,我该面向谁写,由于题目已经订好了:小白到高手的学习路线,所以我只能选择真实的商业化项目来作为讲解,这样才能给刚入门的人以正规的标准,给中级人员以实战项目的借鉴,给高手以扩充知识范围的余地。虽然商业化的项目不能直接拿来共享,但是我还是决定抽取项目中的一部分来做讲解。

说道游戏当中的数值,数据,这一部分是游戏当中最基础,也是最重要的部分。u3d在制作游戏过程中最常用的json/txt/excel/bson/xml等数据格式其实都是想通的,因为任何一种数据格式都可以是byte字节。

大部分游戏的策划喜欢用excel来写策划数据,所以我们今天要做一个工具UnityExcelPraser,把excel工具直接转换成u3d直接可以读取的txt格式,同时生成数据块类和数据操作类,一次性搞定游戏开发中策划数据存储问题。因为是实践课程,希望大家能跟我一起操作。

第一步:首先我们要有excel表格,可以新建一个表格如下,表格的第一行代表了字段的数据格式;第二行代表了字段描述,这个主要用于辅助理解;第三行代表了字段名称;第四行到最后代表了数据的内容。本表格代表一个车站的相关设施信息。自己建立的表格内容可以随意改动,但是第一二三行各代表的属性是不可已更改的,因为代码中要用到。



图1 UserInfo

第二步:打开Demo工程。源码下载地址如下:

github地址:github.com/kuangtoby/Un

本工程我才用unity5.5.0f3打开的,对于这样的小demo,版本一般会有什么影响,打开后工程的截图如下:




图2-打开工程




图3-编译表格




图4-生成数据类

如上面3张图所示,打开Example.scene场景,Project工程资源View中底部有个Xlsx文件夹,里面存放的是已经建好的userinfo表格,打开按照图1-UserInfo中的内容更改表格内容,保存,然后回到Unity->Project里面,鼠标右键点击UserInfo表格,点击下拉菜单中的ExcelPraser->Generate Class from excel这个选项,console窗口出现:generate mgr calss success! 如图3编译表格所示。图4显示了生成的数据块。

到目前为止,数据块和数据操作类都生成了,同时在Xlsx/Resources文件夹下生成了Userinfo.txt文件,这个文件就是数据块类真正关联读取的数据,但是不容许修改,因为是自动生成的,如果要改,其实也不会报错,就是你看的数据会变化。

点击运行,如果没有错误Console窗口会打印信息:老掌门CEO 111共2条信息。到这里项目的运行测试算是过了,这仅仅是第一步,也表示我给大家的这个demo没有错误,写的过程中,我也跟大家一起运行了一遍,没问题,可放心使用。

这里的这个工具如何写涉及到unity3d的编辑器编程的内容,ExcalParser工具的实现相对简单,是需要一个脚本:ExcelParser/ExcelParserEditor.cs,当然功能的实现还是必须要用到三个Dll动态库的,他们分别是:Excel.dll ICSharpCode.SahrpZipLib.dll System.Data.dll。

ExcelParserEditor.cs这个脚本还是建议大家写一下,然后把Excel的路径更改一下,其实可以把Excel文件移到unity3d工程的外面,更改一下ExcelParserEditor.cs中的读取路径就可以了,这个就算是给大家留的一个作业吧,如果又搞不定的及时留言,我尽力指导。此处不做而更改,以免篇幅过长。

接下还还是主要讲讲UserInfoBean.cs UserInfoMgr.cs,自动生成的类。如图5 Excel-DataBean的映射关系,很清晰的看到,excel中3行的内容生成了UserInfoBean类的字段,这种映射关系保证了数据块类与excel表的数据准确性。



图5 Excel-DataBean的映射




图6 UserInfoMgr.cs类

UserInfoMgr类主要的作用是用来读取UserInfo数据信息,通过GetDataById函数,我们可以获取UserInfo表格中的任何一条数据,不用每次我们手动去写,十分方便,当然这里如果你想做一些特殊的数据操作,需要自己创建一个UserInfoMgr类,采用partical的形式补充当前数据操作类。




图7-Example类

Example类中Start函数中,数据读取的方法简洁易用。到此我们的工具UnityExcelParser工具就讲解完成了。

限于篇幅,在这里对于代码的细致讲解,基础不做深入讲解,如果有希望深入了解的可以添加QQ,我会尽力提供DEMO讲解。

QQ: 3344643873 添加时发送:文章名字。

学习交流圈:696570271

编辑于 2018-04-23

文章被以下专栏收录