前言

前几天给ET6.0写了一份FGUI代码生成插件,期间被一些容易混淆的变量名折磨的不轻,这篇文章就记录下从零开始的FGUI插件开发过程。

正文

环境

  • IDE:Rider 2020.3

  • Unity 2020.3.17f LTS

  • EmmyLua 1.3.6.215

FGUI Plugin Lua API

首先下载FGUI-Editor,然后解压,定位到 FairyGUI-Editor/plugin/LuaAPI 目录,记住这个目录,我们后面需要用到他

安装EmmyLua插件

直接在Rider的应用市场下载安装即可

搭建插件开发环境

使用Rider随便新建一个项目,然后在这个项目里添加上面那个FGUI Plugin Lua API文件夹引用

然后再如法炮制,添加我们要开发的插件目录引用,比如 ET/FGUIProject/FGUI_ET/plugins/NKGCodeGenForET6

目前为止,我们插件的开发环境已经集成完毕了,并且得力于EmmyLua插件,我们还有了完善的Lua API提示(前提是在开发插件的过程中严格按照 EmmyLua官方推荐的注释方式 进行注释)

正式开发插件

首先定义package.json文件,这是插件的描述文件,唯一需要注意的点是key “main” 对应了插件入口的lua文件,一定不能写错,如果你比较骚,想定义一下icon,就直接在插件目录放一个png,然后配置key ”icon“ 即可

1
2
3
4
5
6
7
8
9
10
11
{
"name": "NKGCodeGenForET6",
"displayName": "FGUI代码生成插件",
"description": "为NKGFramework定制的FGUI生成代码插件",
"version": "0.0.2",
"author": {
"name": "烟雨迷离半世殇"
},
"icon": "icon.png",
"main": "NKGCodeGenEntry.lua"
}

然后就可以正式开发插件了,官方也给了几个示例,可以参考下,位于我们一开始下载的FGUI Plugin Lua API目录中 FairyGUI-Editor/plugin/

常用API和字段

CS.FairyEditor.PublishHandler:当前包导出的配置

  • pkg.name:包名

  • ToFilename():对上面的包名进行处理,将其中的中文自动转换为小写拼音

  • project:GetSettings(“Publish”).codeGeneration:全局代码生成配置

  • CollectClasses():搜集当前导出包所有对象(GComponent,Controller等),返回值类型为CS.FairyEditor.PublishHandler.ClassInfo[]

红框中每一个对象都是待导出对象

image-20210907005405830

CS.FairyEditor.PublishHandler.ClassInfo:待导出对象的信息

  • members:待导出对象的成员信息,例如一个GButton,就会有一个GText,一张GImage等,值类型为 CS.FairyEditor.PublishHandler.MemberInfo[]

  • className:就是我们对象名,注意,如果在全局设置里设置了组件名前缀,就会自动加上这个前缀,例如我们一个对象名为Btn_Test,组件名前缀为 m_,那么这里获取的className就是 m_Btn_Test

  • resName:对象的资源名

CS.FairyEditor.PublishHandler.MemberInfo:待导出的对象的具体成员信息

  • name:成员名

  • varName:变量名,与上面不同的是,如果在全局设置里设置了变量名前缀,就会自动加上这个前缀,例如我们一个变量名为Btn_Test,变量名前缀为 m_,那么这里获取的varName就是 m_Btn_Test

  • type:变量类型

  • index:变量在树形结构中的索引值