Unity ToLua热更框架使用教程

Posted 引擎猫

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity ToLua热更框架使用教程相关的知识,希望对你有一定的参考价值。

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

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

https://github.com/jarjin/LuaFramework_UGUI_V2

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

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

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

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

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

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

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

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

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

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

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

然后点击运行。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

看到他的Execute方法。

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

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

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

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

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

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

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

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

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

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

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

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


引擎猫QQ交流群:690504410


以上是关于Unity ToLua热更框架使用教程的主要内容,如果未能解决你的问题,请参考以下文章

游戏开发高阶从零到一教你Unity使用ToLua实现热更新(含Demo工程 | LuaFramework | 增量 | HotUpdate)

游戏开发高阶从零到一教你Unity使用ToLua实现热更新(含Demo工程 | LuaFramework | 增量 | HotUpdate)

Unity 接入 ILRuntime 热更方案

Unity 接入 ILRuntime 热更方案

ToLua框架下C#与Lua代码的互调

游戏开发框架自制Unity通用游戏框架UnityXFramework,详细教程(Unity3D技能树 | tolua | 框架 | 热更新)