Unity 3D ULua 基于UGUI的初次使用的心得与体会
想免费获取内部独家PPT资料库?观看行业大牛直播?点击加入腾讯游戏学院游戏程序行业精英群
711501594刚进官网的时候就注意到了,ULua这个框架是国人写的,使用的时候各种中文注释也是倍感亲切,作者还提供了视频、例子、各种提醒,生怕使用者不会用。
首先吐槽一番Lua吧,我觉得这个语言是最逗逼的语言,index从1开始、:使用成员方法、.使用静态方法、 boolean的一个值传进去变成个table...当然在做手游的时候早就体验了它的坑爹之处。
但是做热更新,它基本是不二的选择,然后我记录一下如何用github上作者提供的框架新建和销毁一个UI。
如果使用的是5.4.1版本,一开始就会遇到一个错误:
然后往上看:
把#if和#endif这两行删除就好,还是需要引入UnityEngine.SceneManagement才行。
还有就是ToLua的第二个例子:
里面文件的路径有点问题改一下就好。
接下来我来介绍一下这个框架的操作思路:
1.菜单栏Lua -> Generate All,将C# UnityEngine的一些系统类(GameObject、Camera、Light等)生成接口,提供给lua使用,这个步骤导入框架时应该会提醒你生成。生成的文件所在位置:ToLua/Source/Generate。
2.自己的文件也想提供给lua的,在Editor文件夹下有个CustomSetting类,仿造里面写就好了。
3.生成lua资源包,点开Scenes下的main场景,再点击菜单栏LuaFramework -> Build Windows Resource就能生成资源包,运行之后就可以看到该例子通过lua文件生成的UI了。
4.自己用lua文件生成UI,其实照着例子去找关键的地方就好。我提一下关键的点,首先,在Builds下新建个文件夹,再在里面建立一个UGUI的prefab,要求以Panel结尾:
其次,在Packager类中提供prefab的名字,以便资源打包:
然后在Lua文件夹下新建Controller、View的lua文件:
5.在Lua框架中添加自己的Lua文件的注册信息。
CtrlManager.lua文件:
define.lua文件:
6.编写View和Controller,直接放代码吧:
7.此时生成资源包,再运行不会报错,但是也没有效果,因为程序中没有控制生成该UI,想要生成,去看一下Game.lua,我仿造了一发:
这样生成资源包再运行,就能看到自己的prefab出现在GuiCamera的下面了。
8.不过有个错误的啦,你想销毁该UI,然后调用了imageCtrl:Close(),但是并没有什么卵用,这是应该是BUG,这里把ImageCtrl中的Close函数改成下面的写法就好:
效果,按照下面Debug信息创建后销毁了自己的UI:
9.最后提一个函数传递的小坑:
我写了以上方法,想使用一下代码控制UI的显示隐藏:
来自:http://blog.csdn.net/u012632851/article/details/62424511大家也看到了我写的type(b)了,传递之前b是boolean,然后传递后就成了table型了。我有点印象,我去年也遇到过这个问题。
改正方法就是改一下SetAcitve这个方法:
通过以上的学习和探索,我对ULua也有了个大体的把握,这个框架很棒,市面上要做热更新的手游基本上都用这个框架,所以深入学习一下Lua和该框架就很有必要。
不过我暂时入个门,有需要再说。书也看得差不多了,接下来我准备学习Shader和数值分析。