LuaFramework 学习记录(一)

LuaFramework是tolua#(原ulua)的一个框架,框架已经实现了Lua脚本的更新操作。
我使用的框架是UGUI的版本,版本号1.0.7.386,Unity版本5.3.4。

1.场景

在main场景中,GameManager上挂载了Main.cs,脚本中就一行代码,用来启动框架。

AppFacade.Instance.StartUp();

来看AppFacade类

LuaFramework 学习记录(一)_第1张图片
AppFacade.cs.png

InitFramework()是在基类的构造函数中调用的,这个函数将START_UP命令与StartUpCommand绑定,而在StartUp()中发送了START_UP命令,因此StartUpCommand被执行。这里引出了PureMVC,实际上,LuaFramework使用的是作者精简后的PureMVC,详细可见: http://doc.ulua.org/article/ugui/simpleframework_038.html。我们只需要知道它是以消息机制来解耦模块间通讯的即可,比如上面的START_UP就是一条消息,发送消息后,之前绑定了该消息的模块中的Execute()函数会被执行。

StartCommand.cs

除了绑定一条命令,主要完成了各个Manager的初始化,并将它们添加到GameManager物体上,详见Facade.AddManager()。

GameManager.cs

StartCommand类中添加了GameManager类,GameManager主要用来完成lua文件的更新。
大致流程:解压资源-->更新资源-->资源更新完毕。
解压资源OnExtractResource()本质上是读取包体内资源并写入到persistentPath下,一般来说只在第一次打开游戏时触发。随后更新资源OnUpdateResource(),更新完成后OnResourceInited()-->OnInitialize()完成了lua部分的初始化。

LuaManager.cs

上面OnInitialize()中执行了LuaManager.InitStart(),主要关注StartMain(),这里加载了Main.lua,并执行Main.lua的Main(),注释里说Main()是lua逻辑的入口,这里还不清楚跟Game.lua中OnInitOK()有何区别,因为在GameManager.OnInitialize()中最后也同样执行了Game.lua中的OnInitOK()。
LuaManager.OpenLibs()是用于加载用到的lua库,例子中的前三项均为传输协议,实际使用时根据项目需要选其一即可。

你可能感兴趣的:(LuaFramework 学习记录(一))