ulua SimpleFramework_UGUI热更新框架逻辑梳理

推荐阅读:

流程图

首先使用流程图将框架的执行顺序大致呈现给大家。为了方便大家对照代码查看,流程图中使用的是函数方法名,右侧紧挨着的是方法对应的脚本文件名;流程图中的三个点代码顺序执行右侧脚本。
在这里插入图片描述

项目逻辑分析

为了方便查看,这里将C#脚本和Lua脚本都打开,来看看框架的逻辑,我选用sublime和VS编辑器来分别打开lua和C#代码。
在这里插入图片描述
1、首先打开SimpleFramework_UGUI-0.4.1\Assets\Examples\Scenes\Login场景,除了同游的摄像机等外,还有一个名为GlobalGenerator的空物体,上面挂在额一个名为GlobalGenerator.cs脚本,可想而知GlobalGenerator.cs便是我们游戏的入口函数:
在这里插入图片描述
通过注释能准确锁定游戏入口为AppFacade.Instance.StartUp();
2、F12进入StartUp查看函数具体定义,F12进入SendMessageCommand,里面有SendMessageCommand的方法定义,也有RegisterCommand方法的定义。

理解了SendMessageCommand和RegisterCommand方法,从下图中我们就能理解代码的意思了,首先为NotiConst.START_UP注册了一个StartUpCommand类型的命令,然后在StartUp函数中发送了NotiConst.START_UP命令,目的是执行操作。
在这里插入图片描述
3、F12进入StartUpCommand中
在这里插入图片描述
图中的操作是为GlobalGenerator游戏物体添加AppView脚本组件,然后为其添加一系列的管理器脚本。这里我们主要分析GameManager脚本。
4、OnResourceInited函数的作用。
在这里插入图片描述
上面代码首先执行了Network,lua和GameManager.lua脚本。
接着调用了CallMethod,我们使用F12一直追踪,定位到如下函数:
在这里插入图片描述
通过这个函数分析发现:object[] panels = CallMethod(“LuaScriptPanel”);这句代码是在执行logic\GameManager.lua中的LuaScriptPanel方法,因此,我们又转到GameManager.lua中,分析LuaScriptPanel方法的作用:
在这里插入图片描述
结合GameManager.c和上面的代码可以看出,这里返回的是需要加载的场景面板对应的名字数组,但是统一去掉了面板名字的Panel字段,因为在C#下面的代码中查找时自动添加了该字段。
在这里插入图片描述
由上图我们可以看出获取到面板名字后又执行了View下对应名字的lua代码:
在这里插入图片描述
执行完所有的View下对应的name+Panel.lua代码,程序又回到了C#代码,此时C#代码又执行了OnInitOK,该方法位于GameManager.lua下
在这里插入图片描述
除去一些网络连接操作,又执行了两个Awake方法,跟踪到startCtrl.lua中:
在这里插入图片描述
这里Awake执行了PanelManager.cs中的CreatePanel方法:
在这里插入图片描述
CreatePanel方法开启了一个协成来实例化一个面板,并设置位置父节点等。
当实例化对象并设置完成后又回到lua代码中执行回调方法OnCreate,为面板中的组件添加点击事件
在这里插入图片描述

  • 31
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 32
    评论
评论 32
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱上游戏开发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值