最近在研究游戏数据的工作流,翻看了一些项目,比方说雨松研究院里支持直接数据转代码热更的滤查表(真的跟绿茶婊没关系吧。。。),还有github上日本人开发的能把excel转成ScriptableObject的Unity-Excel-Improter-Maker,最后决定使用今天要介绍的这款插件——GameDataEditor。下面就来介绍一下他的优缺点。(以下内容均基于付费版本,免费版本未尝试)

优点:

1支持google表格、excel表格、csv等格式数据,而且版本兼容性比较好。

2数据格式多样化,包括基本类型如int,Unity特定类型如material,自定义类型和以上类型的列表格式。

3导入时基本格式会根据类型做转化,同时错误数据的报错定位准确。

4表格格式比较清晰,支持忽略内容(用来写注释最好)。

5可以根据数据一键生成类,在游戏中可以直接使用并且以此操作数据、保存数据。

6原始数据和用户数据分离,支持reset。

7数据双向连通,unity中的数据可以导出为excel或者更新google表格。

8编辑器界面体验良好,功能很多(有很多功能我还没尝试),可以在导入后修改数据。

9文档有中文版本,虽然好像和英文版本不太一致。(开始我还以为开发者是国人,后来才发现不是)

10数据可加密(AES)。

缺点:

1数据默认转成json格式,没有其他选择。

2虽然支持多工作表数据,但是工作表之间的key值必须唯一,而且如果重复导入时没有提示,后面的数据会丢失。

3虽然key值唯一,但是数据集被封装成List而没有Dictionary。

4没有完整的API文档,而且部分API感觉有点奇怪,下面会把部分尝试过的列出来。

5由于自定义类型是自动生成的,所以自然是没法继承的,可以生成后自己修改。

因为除了excel导入和json解析等是库其他均为源码,上面的问题都是可以解决的:)

 

  介绍完了优缺点,以下是API使用部分:

获取数据集:

因为我使用了生成的数据类,所以根据类型获取当然是首选:

public static List<T> GetAllItems<T>() where T : IGDEData

插件还提供了根据工作表获取:

public static bool GetAllDataBySchema(string schema, out Dictionary<string, object> data)

获取单个数据:

根据类型随机获取一个:

public static T GetRandom<T>() where T : IGDEData

获取特定某个的方式比较特别,要new一个该类型的对象,构造函数中传入对应的key值。

初始化、保存和重置比较简单,大家自己看下就好。

 

  以上就是GameDataEditor的初探内容,希望能帮到同样在选择数据处理方案的朋友。