最近在研究游戏数据的工作流,翻看了一些项目,比方说雨松研究院里支持直接数据转代码热更的滤查表(真的跟绿茶婊没关系吧。。。),还有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的初探内容,希望能帮到同样在选择数据处理方案的朋友。