Skip to content
walon edited this page Feb 26, 2022 · 2 revisions

Editor支持

GamePlay相关功能经常有自定义编辑器的需求,而自定义编辑器的数据往往以记录为单位,数据结构较为复杂,每个记录保存为单独的json文件。luban支持这类编辑器工作流。

luban生成编辑器读写记录的json文件所用的代码,编辑器开发者只需使用Load和Save函数就能加载和保存记录为符合Luban解析器配置规则的json文件。

生成相关参数

生成的editor代码类的默认命名空间为 "editor." + topmodule 。可以通过root定义文件中的option 'editor.topmodule'来修改这个默认值,示例如

<root>
    <topmodule name="cfg"/>
    <option name="editor.topmodule" value="MyEditorConfig"/>
</root>

生成

luban为编辑器生成的代码跟为项目运行时使用的代码很不一样,有以下几个关键区别

  • 不会生成Table代码。 因为编辑器一般以记录为单位操作数据,没必要生成Table加载和保存的代码。
  • 不会生成Tables代码。 因为没这个需要。
  • 为enum额外生成生成元数据xxx_Metadata类,定义了所有enum枚举项的元数据
  • 生成的bean代码中包含了ToJson和FromJson函数
  • datetime类型对应string类型,text对应EditorText类

Unity

取 --gen_types code_cs_unity_editor_json , 生成即可。

可参考示例项目Csharp_Unity_Editor_json

使用示例如下

// 加载
var skill = new editor.skill.Skill();
skill.LoadJsonFile("10001.json");
UnityEngine.Debug.Log("skill id:{0}, name:{1}", skill.Id, skill.Name);


// 保存
var skill = new editor.skill.Skill();
skill.Id = 10001;
skill.Name = "attack";
skill.SaveJsonFile("10001.json");

UE4

取 --gen_types code_cpp_ue_editor_json。

目前还未严谨测试。等有实际需求时再测试。

Clone this wiki locally