Unity ToLua热更框架使用教程(1)

从本篇开始将为大家讲解ToLua在unity当中的使用教程。

Tolua的框架叫LuaFramework,首先附上下载链接:

https://github.com/jarjin/LuaFramework_UGUI_V2

这个地址的是UGUI的。

下载完之后导入项目,首先,我们要先让这个项目跑起来。

首先点击Lua->Clear wrap files,清除所有wrap文件。

然后点击LuaFramework->Build Windows Resource,打包ab资源。

最后点击Lua->Generate All,重新生成wrap文件。

但是在我这里生成Wrap文件时出现了一个报错。

经过调试之后发现是ParticleSystem该类生成wrap文件时出现的问题。

所以把这行注释掉,重新操作一下就可以了。

然后点击运行。

直到这里,我们的项目总算是跑起来了。

接下来,我们来看一下这个框架是如何运行的。

在运行之前我们可以看到,场景中只有一个GameManager挂载了一个Main脚本,顾名思义,该脚本就是入口脚本。

游戏一开始,调用一个StartUp函数。

在StartUp当中又去调用了一个SendMessageCommand。

该函数调用了m_controller的ExecuteCommand方法。

这个m_controller是一个单例,当Facade被构造的时候创建的,而我们入口脚本当中的AppFacade类又是继承自Facade的。我们看到,当Facade类构造时,会调用InitFramework方法。

所以当AppFacade构造时,就注册了一个StartUp的类型。

将该枚举对应的类型注册进字典。

我们上面调用了m_controller的ExecuteCommand,我们可以看到,这个ExecuteCommand函数就是根据传进来的枚举去获取对应的类型,然后使用Activator.CreateInstance(commandType)去创建一个这种类型的实例,并且调用它的Execute方法。

我们上面注册的时候,该枚举对应的类型是StartUpCommand。

看到他的Execute方法。

这里添加了很多个管理器。

他是怎么添加的呢,实际上这些管理器都是继承自Monobehaviour的,其实就是添加这些组件到GameManager对象上并存进字典当中。那么既然是Monobehaiour,那么这些管理器就肯定都有生命周期函数。我们先看到GameManager。

在Awake当中调用了初始化方法Init。然后释放资源。然后热更新,对比files文件等等一系列的操作,大家可以顺着往下看,代码太长不截图了,最后我们会看到他执行到了这个方法。

OnInitialize这个方法,LuaManager.DoFile("Logic/Game"); 这句代码,加载Logic文件夹下的Game这个lua文件。这个Game文件可以说是Lua脚本的入口脚本了。可以看到上面的代码,它调用了Game脚本的OnInitOK函数来驱动lua脚本。

OnInitOK该函数中,他去初始化一些View脚本和Ctrl脚本,这里就可以看出来,其实Tolua是采用MVC思想的。

看到InitViewPanels方法,他去加载PanelNames表的所有脚本。其实就是加载View文件夹下的视图层脚本。

那么视图层脚本的代码就可以使用了。反正Game这个脚本就是一个lua的入口脚本,具体大家要怎么做都可以。就是这么个流程。本篇就先讲这么多。

相关推荐
red_redemption29 分钟前
自由学习记录(23)
学习·unity·lua·ab包
/**书香门第*/4 小时前
Cocos creator 3.8 支持的动画 7
学习·游戏·游戏引擎·游戏程序·cocos2d
向宇it18 小时前
【unity小技巧】unity 什么是反射?反射的作用?反射的使用场景?反射的缺点?常用的反射操作?反射常见示例
开发语言·游戏·unity·c#·游戏引擎
Heaphaestus,RC20 小时前
【Unity3D】获取 GameObject 的完整层级结构
unity·c#
芋芋qwq20 小时前
Unity UI射线检测 道具拖拽
ui·unity·游戏引擎
tealcwu20 小时前
【Unity服务】关于Unity LevelPlay的基本情况
unity·游戏引擎
大眼睛姑娘1 天前
Unity3d场景童话梦幻卡通Q版城镇建筑植物山石3D模型游戏美术素材
unity·游戏美术
鹿野素材屋1 天前
Unity Dots下的动画合批工具:GPU ECS Animation Baker
unity·游戏引擎
小春熙子1 天前
Unity图形学之着色器之间传递参数
unity·游戏引擎·技术美术·着色器
虾球xz1 天前
游戏引擎学习第15天
学习·游戏引擎