FGUI插件开发指南(Lua)
前言
前几天给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 | { |
然后就可以正式开发插件了,官方也给了几个示例,可以参考下,位于我们一开始下载的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[]
红框中每一个对象都是待导出对象
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:变量在树形结构中的索引值