美文网首页
LuaFramework 学习记录(一)

LuaFramework 学习记录(一)

作者: 食不知味_夜不能寐 | 来源:发表于2018-01-09 16:25 被阅读620次

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

    1.场景

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

    AppFacade.Instance.StartUp();
    

    来看AppFacade类

    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 学习记录(一)

          本文链接:https://www.haomeiwen.com/subject/wiywnxtx.html