Notifications
Article
Unity_Demo:unity读取Excel数据
Published 6 months ago
51
0
解决问题:Unity开发中数据分离,数据作为单独模块,随时替换更新,对逻辑没影响。
语音介绍:-----------------------------------------------------------------------------

成果展示

如右图所示,如果开发过程中,数据读取正确,会显示如图所示效果。

实践过程

大部分游戏的策划喜欢用excel来写策划数据,所以我们今天要做一个工具UnityExcelPraser,把excel工具直接转换成u3d直接可以读取的txt格式,同时生成数据块类和数据操作类,一次性搞定游戏开发中策划数据存储问题。因为是实践课程,希望大家能跟我一起操作。
  • Step1:Excel表格创建 首先我们要有excel表格,可以新建一个表格如下,表格的第一行代表了字段的数据格式;第二行代表了字段描述,这个主要用于辅助理解;第三行代表了字段名称;第四行到最后代表了数据的内容。本表格代表一个车站的相关设施信息。自己建立的表格内容可以随意改动,但是第一二三行各代表的属性是不可已更改的,因为代码中要用到。
  • Step2:下载后打开Demo工程
本工程我才用unity5.5.0f3打开的,对于这样的小demo,版本一般会有什么影响,打开后工程的截图如下:
  • Step3:开始操作
如上面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表的数据准确性。
Example类中Start函数中,数据读取的方法简洁易用。到此我们的工具UnityExcelParser工具就讲解完成了。

常见问题

  1. Excel生成txt为空,通常解决办法是删除txt文件重新生成。
  2. 生成内容混乱,注意Excel表格中的数据内容不要有空格。

Tags:C#Unity
Jason
CEO - Manager
5
Comments