【FGUI】自动生成UI控件代码,lua写的插件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了【FGUI】自动生成UI控件代码,lua写的插件相关的知识,希望对你有一定的参考价值。

参考技术A 在FGUI中可以自己去写lua的插件,来实现各种功能,最近写了一个自动生成UI控件的插件,需要的自取

总共分为4个文件,全部放在FGUI的工程目录下的plugins文件夹里
CodeGenEntry.lua
CodeGenConfig.lua
HotfixCodeGenHandler.lua
package.json

自动生成ulua中使用的lua代码

  本篇主要解决的问题是使用lua脚本编写unity界面逻辑时,自动生成一些查找控件及绑定事件的lua代码!

 

  现在很多unity项目都是用ulua作为热更新解决方案,因此需要用lua来写相关的逻辑,经常会用到的就是在lua中查找某个对象,尤其是写一些UI逻辑!

  比如在Login界面中有登陆按钮、记住密码勾选框,在lua中获取这两个按钮可能的lua代码写法就是:

a1 self.loginButton = self.gameObject.transform:findChild(‘loginRoot/.../loginButton‘):GetComponent(‘Button‘)

a2 self.rememberPasswordToggle = self.gameObject.transform:findChild(‘loginRoot/.../rememberPasswordToggle ‘):GetComponent(‘Toggle‘)

同时还需要为loginButton绑定单击事件的触发函数[类似:EventListener.Get(self.loginButton.gameObject).onClick = ...self.onClickLogin...这样的代码]

如果每次要获得某个控件都要写上上述的find路径,并绑定相应的触发函数,那么这个重复的工作量是挺大的!(正常一个不要太小型的游戏所有的界面怎么样也得有几十个吧??)

  为此我写了一个自动生成上述代码文本的小工具主要就是免除这繁琐的重复性编写无意义的代码,以及降低出错率!具体下载地址见下方连接!就3个cs文件(GenerateLua.cs、WidgetsInspector.cs、Widgets.cs),主要的代码都在widget.cs文件中(其实无非就是字符串替换,没什么特别之处,但好像我们项目组的人就懒的写这个??只好自己来了),GenerateLua.cs处理执行生成命令,WidgetsInspector.cs定制Widget类的public属性在监视器Inspector中的显示方式!(你可以在里面的OnInspectorGUI中调用基类的base.OnInspectorGUI()就知道默认显示有多恶心了!!!因此不懂自定义编辑器的童鞋也可以看看这个脚本:))

  使用方法:

1.将Widgets.cs挂在场景中的Main Camera对象上(其实你也可以挂在别的对象上,自己改代码就行了),

2.然后会看到该脚本上有几个公共属性,其中FindWay枚举表示你的控件被谁查找到,默认为self.gameObject,在此选择你指定的根节点RootTrans,比如我指定login按钮由RootTrans为accountBg查找到,那么生成的代码就是

self.loginButton = self.accountBg.transform:findChild(‘loginRoot/.../loginButton‘):GetComponent(‘Button‘)

3.将你要查找的控件拖拽到Transform框中,没错,你猜对了,就是用拖拽指定控件,然后根据指定的控件类型绑定事件类型生成相应的ui控件查找代码以及绑定代码!

4.无误完成上述步骤之后,点击菜单栏中的GenerateLua->Generate即可在控制台console中看到打印的输出,到此就可以方便的进行拷贝粘贴代码了!!

 

  btw,顺便说一下生成规则:

1.控件的命名是按我自己的习惯,根据选定的控件类型(比如Button),自动在控件名称后加尾缀Button,比如指定login名称后,类型为Button,绑定事件类型为OnClick,则生成的代码大致为前述的a1;

2.控件命名带空格的话生成时会自动被去除;含一些lua中不允许的非法字符则生成时会提示报错;

 

大致就这些,还可以继续扩展,但现在基本应用绰绰有余了!前几天手写查找代码,时不时写错,dangteng的很,现在错不了了!

下载请前往百度云网盘

转载请注明来自http://www.cnblogs.com/only194/

以上是关于【FGUI】自动生成UI控件代码,lua写的插件的主要内容,如果未能解决你的问题,请参考以下文章

自动生成ulua中使用的lua代码

redis+lua生成分布式自增单号

qt 自定义控件怎么使用? 用“Qt4设计师自定义控件”写了个控件,但是不知道怎么使用,急啊!

iOS 简单易用的二维码扫描及生成二维码三方控件LFQRCode,可灵活自定义UI

Qt编写自定义控件插件开放动态库dll使用(永久免费)

如何在 Material-UI 自动完成控件中自定义填充?