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的入口脚本,具体大家要怎么做都可以。就是这么个流程。本篇就先讲这么多。
Unity ToLua热更框架使用教程(1)相关推荐
- 【UGF】GameFramework接入HybridCLR(wolong)卧龙C#热更框架
HybridCLR的推广已经做得相当好了,而且热更领域突然杀出一匹黑马,热度很高,不再多做介绍,可以点击进入HybridCLR开源地址了解详情. 在此之前用过tolua和xlua热更框架, 因为C#开 ...
- 视频教程-热更新框架设计之客户端热更框架(中部)视频课程-Unity3D
热更新框架设计之客户端热更框架(中部)视频课程 二十多年的软件开发与教学经验IT技术布道者,资深软件工程师.具备深厚编程语言经验,在国内上市企业做项目经理.研发经理,熟悉企业大型软件运作管理过程.软件 ...
- unity 代码热更+资源管理框架总结
游戏要做热更涉及到什么方面呢 首先就是代码热更,然后就是资源热更 这些热更新都依赖于打AssetBundle 然而打AssetBundle 你还要上传服务器-对比更新-客户端下载-加载-卸载这些流程 ...
- unity menuitem_Unity热更_打AssetBundles包
Unity热更_打AssetBundles包 Unity开发离不了热更新,现在市面上有很多的热更方案,XLua.ToLua以及C#热更方案ILRuntime,以腾讯的XLua为例,若要实现热更新,As ...
- Unity——Tolua框架笔记
一.准备阶段 1.下载LuaFramework_UGUI,LuaFramework_UGUI_V2 2.解压项目LuaFramework_UGUI,用Unity打开,操作完成下图然后选择LuaFram ...
- 视频教程-热更新框架设计之热更流程与热补丁视频课程-Unity3D
热更新框架设计之热更流程与热补丁视频课程 二十多年的软件开发与教学经验IT技术布道者,资深软件工程师.具备深厚编程语言经验,在国内上市企业做项目经理.研发经理,熟悉企业大型软件运作管理过程.软件架构设 ...
- Java和U3D比较,Unity热更方案 ILRuntime 和 toLua的比较
前言 目前市面上流行的热更方案就是lua系列和ILRuntime,选取哪一种需要根据自己的项目进行比对. 无论是ILRuntime还是toLua都是市面上有在用到的热更方案.直观上来讲,都可以通过把代 ...
- 【Unity】热更新插件【ULua】学习教程整理
前言 IOS不能热更新,不是因为不能用反射,是因为 System.Reflection.Assembly.Load 无法使用 System.Reflection.Emit 无法使用 System.Co ...
- unity ui框架_[教程汇总+持续更新]Unity从入门到入坟——收藏这一篇就够了
----------------塔防(更新中),作者重写了基础篇(下方目录为:1.1(新) 基础)目前还在持续连载了5篇,因为不多我们更新完就能追到原作者的进度了------------------- ...
最新文章
- 微信小程序商城demo
- 【正一专栏】曼城攻击力惊人露出冠军相
- html线条绕圆旋转,js围绕圆旋转
- 揭示垃圾收集暂停的时间长度
- 程序员的自我修养(2)——计算机网络
- centos6安装mysql 5.5_CentOS6.5上安装MySQL5.5
- 三行代码实现冒泡排序算法
- mysql 替换全部标内容_Mysql SQL 替换标签内容
- Linux进程通信之信号量
- 【C++】字体文件解析(FreeType)
- window 清理maven本地仓库
- java计算机毕业设计河南省农村多元化养老服务管理系统设计与实现源码+mysql数据库+系统+lw文档+部署
- Java - 什么是IoC和DI?DI是如何实现的?
- 【2016年第4期】基于仿真大数据的效能评估指标体系构建方法
- MySQL Transportable Tablespace
- python如何画贝塞尔曲线_Python使用matplotlib实现绘制自定义图形功能示例
- 【毕业设计】基于单片机的智能感应垃圾桶设计与实现 - 物联网 stm32 嵌入式
- 概率题 宝剑升级需要多少宝石
- ThreadLocal应用实例
- opencv——识别A4纸
热门文章
- 手游iOS苹果签名解释
- BIOS中断大全:“INT 10H ~ INT 1AH”
- 块编辑器和双链笔记如何选择Notion vs Roam Research?FlowUs vs Obsidian
- 计算机游戏手机攻略,吃鸡秘籍排名第一:如何使用稳赢技巧,你不知道的真相在此!...
- 4.1 keras基础实例 手写数字识别
- python transpose与permute函数详解
- FileZilla_Server_1.0.1路径设置
- Linux删掉一级目录,linux命令删除文件夹
- 零基础在家学编程,挑战年薪10万~100万
- Windows server 2016安装OpenSSH Server