LuaFramework中Main示例场景的执行流程

1、运行游戏,通过执行GameManager物体上的Main.cs脚本,调用该脚本里的Start方法,执行方法里的语句启动游戏。

2、上面的Start方法里调用了APPFacade.cs里的StartUp方法,同时调用了AppFacade构造方法。然后调用AppFacade的InitFramework方法(AppFacade继承了Facade。AppFacade里的构造方法使用了父类即Facade里的构造方法。该构造方法调用了虚方法InitFramework。而子类AppFacade又重写了InitFramework方法)。

3、AppFacade的InitFramework方法调用了RegisterCommand方法,引向了StartUpCommand脚本,该脚本里初始化所有的管理器(LuaManager、PanelManager、SoundManager、TimerManger、NetworkManager、ResourceManager、ThreadManager、ObjectPoolManager、GameManager),将其加载到GameManager物体上。

5、GameManager.cs脚本启用,调用CheckExtractResource方法释放资源。判断数据存放目录释放存在,如果存在就启动OnUpdateResource协程,如果AppConst.UpdateMode=true就更新资源下载,否则不更新。如果不存在,就启动OnExtractResource释放协程。等更新完后,就调用OnInitialize方法,调用Game.lua文件中的OnInitOk方法,进入lua逻辑。

4、PanelManager.cs里有一个创建面板的方法CreatePanel(string name, LuaFunction func = null)方法。方法里传入两个参数:面板的名字和一个lua方法。

5、PromptPanel.lua脚本里提供了控件变量(btnOpen、gridParent)给PromptCtrl.lua脚本使用。

6、PromptCtrl.lua里调用了PanelManager里的CreatePanel方法。

7、然后调用lua里的方法OnCreate方法。该方法里得到UIpanelhe LuaBehaviour组件,调用AddClick方法,给btnOpen添加点击事件,调用Loadprefab方法,加载预设体。

8、加载预设体方法里调用lua里的InitPanel方法来初始化面板。

9、在define.lua文件中持有所有的manager的引用,和一些C#脚本的引用。在别的lua文件中只要require “Common/define”,就可以直接使用这些引用了。

10、如果需要创建一个panel,只需要添加或修改下列文件: