背景

19年年初的时候,进到一家新单位,公司正准备将现有的游戏做成支持热更的版本。于是寻找热更方案的任务就落在了我头上。

经过搜索了解,能做Unity热更的方案是有好几种,但是要么不够成熟,要么不支持iOS平台,相对来说,还是用Lua来实现比较靠谱。

而Lua的热更方案也有好几种:xLua、toLua和sLua。

其中xLua擅长打补丁,sLua难以理解,而toLua因为有着LuaFramework的存在,入门门槛低,因此我就选择了toLua(LuaFramework)。

由于对Lua语言不太熟悉,又对热更没啥概念,tolua也没啥文档,说是门槛低,但对当时的我说来,想入门还是很困难的。

边学边做,差不多花了一个月的时间才理顺了框架。

在这个过程中,我花了很多时间在网上搜索相关资料,但是找到的有用的资料甚少,大部分都是浅尝辄止的学习教程,深入使用的和剖析的极少。

没有人能告诉你哪里该怎么做,下一步应该做什么。

有感于此,在我入门的三个月后,决定将我的LuaFramework学习之路记录下来,一是为了锻炼一下自己的表达能力,二是希望我的学习经历能对后来人有所帮助。因此才有了这一系列文章。

本系列文章重在操作,而少讲原理。一是我自己也只勉强学会了使用,对原理理解并不透彻,怕误导他人;二是觉得先用起来,然后再回头去理解原理是一种更适合的方式。

文章内容有点浅,但是一个完整的lua热更游戏开发过程应该使用到的东西都有涉及,希望对你有所帮助。

因为我本人也是初学者,文章内容难免有错误和疏漏,欢迎指正。

系列文章链接

为方便综合学习,现将这一系列文章的链接都列在此处:

Unity3D热更新之LuaFramework篇[01]--从零开始

Unity3D热更新之LuaFramework篇[02]--用Lua创建自己的面板

Unity3D热更新之LuaFramework篇[03]--prefab加载和Button事件

Unity3D热更新之LuaFramework篇[04]--自定义UI监听方法

Unity3D热更新之LuaFramework篇[05]--Lua脚本调用c#以及如何在Lua中使用Dotween

Unity3D热更新之LuaFramework篇[06]--Lua中是怎么实现脚本生命周期的

Unity3D热更新之LuaFramework篇[07]--怎么让unity对象绑定Lua脚本

Unity3D热更新之LuaFramework篇[08]--热更新原理及热更服务器搭建

Unity3D热更新之LuaFramework篇[09]--资源热更新与代码热更新的具体实现

Unity3D热更新之LuaFramework篇[10]--总结篇

文章使用的项目也已经上传到Github,地址:https://github.com/tanyuqing/LuaFramework-in-action

项目所使用的Unity版本为5.5.5f1,其它版本未验证。

文章参考

背景里我虽然吐嘈关于LuaFramework有用的资料太少,但是还是有的。

我能学会这个框架的使用,罗培羽 大佬 写的一系列关于LuaFramework的文章,对我起了极大作用。这些文章对LuaFramework框架的各种概念有详尽的解释,价值很高。

现将相关文章链接收录在此,以供参阅。

Unity3D热更新LuaFramework入门实战(1)——代码热更新

Unity3D热更新LuaFramework入门实战(2)——资源热更新

Unity3D热更新LuaFramework入门实战(3)——编写Lua逻辑

Unity3D热更新LuaFramework入门实战(4)——Lua组件

Unity3D热更新LuaFramework入门实战(5)——UI

Unity3D热更新LuaFramework入门实战(6)——网络

Unity3D热更新LuaFramework入门实战(7)——PureMVC

Unity3D热更新LuaFramework入门实战(8)——声音管理器

Unity3D热更新LuaFramework入门实战(9)——线程管理器

Unity3D热更新LuaFramework入门实战(10)——示例程序

罗大这一系列算得上是LuaFramework的高阶使用教程了,我写的那些只能算是初阶入门指南,不过我的目的就在于此,毕竟要先入门才能往高处走。

新的热更方案

ILRuntime

这是我最近才了解到的一个用c#进行热更的框架,引用网上的一段评价来说明此框架。

ILRuntime是掌趣科技开源的unity热更框架, 这个框架打破了C#不能做ios平台热更的规则,在ios平台中是以ILRuntime + DLL 的方式解释执行,当然是在IL2CPP下。
有了这个框架,开发者只需使用C#这一种语言即可,而不用在C#和lua之间切换,但这个框架也是有很多坑的,在一些方面性能是不如lua的,Git上的贡献者也很少,暂时没有经过大量项目的考验,用的人还是比较少的。

希望这个框架能够成熟,毕竟不用定lua代码,能省好多事。

相关链接:http://ourpalm.github.io/ILRuntime/public/v1/guide/index.html

感谢

在我这一系列每篇文章的最后,总是少不了一个人的身影。感谢 马三小伙儿 大佬的解惑和长期以来的支持。

马三小伙儿 也是园子里的一们unity大牛,精通unity、android开发,熟悉网络原理,且还有自己的unity开发框架 ColaFrameWork 。

是我学习路上的榜样, 感谢!

结语

这一系列文章到这里应该就结束了,没讲的东西还有不少,但如果每一篇你都跟着做了,现在应该也基本通透了,其它的都是细枝末节,自己摸索摸索也应差不多了。

如果关于这一系列文章你有啥疑问,可以直接评论或给我发邮件联系我。

QQ邮箱:594006414@qq.com

---------2019-07-30  01:27---------

Unity3D热更新之LuaFramework篇[10]--总结篇的更多相关文章

  1. Unity3D热更新之LuaFramework篇[03]--prefab加载和Button事件

    在上一篇文章 Unity3D热更新之LuaFramework篇[02]--用Lua创建自己的面板 中,我介绍了LuaFramework加载面板的方法,但这个方法并不适用于其它Prefab资源,在这套框 ...

  2. Unity3D热更新之LuaFramework篇[02]--用Lua创建自己的面板

    在上篇文章 Unity3D热更新之LuaFramework篇[01]--从零开始 中,我们了解了怎么获得一个可用的LuaFramework框架. 本篇将我会先介绍一下如何配置Lua开发环境,然后分析在 ...

  3. Unity3D热更新之LuaFramework篇[07]--怎么让unity对象绑定Lua脚本

    前言 在上一篇文章 Unity3D热更新之LuaFramework篇[06]--Lua中是怎么实现脚本生命周期的 中,我分析了由LuaBehaviour来实现lua脚本生命周期的方法. 但在实际使用中 ...

  4. Unity3D热更新之LuaFramework篇[09]--资源热更新与代码热更新的具体实现

    前言 在上一篇文章 Unity3D热更新之LuaFramework篇[08]--热更新原理及热更服务器搭建 中,我介绍了热更新的基本原理,并且着手搭建一台服务器. 本篇就做一个实战练习,真正的来实现热 ...

  5. Unity3D热更新之LuaFramework篇[05]--Lua脚本调用c#以及如何在Lua中使用Dotween

    在上一篇文章 Unity3D热更新之LuaFramework篇[04]--自定义UI监听方法 中,我对LuaBehaviour脚本进行了扩展,添加了两个新的UI监听方法,也提到最好能单写一个脚本处理此 ...

  6. Unity3D热更新之LuaFramework篇[04]--自定义UI监听方法

    时隔一个多月我又回来啦! 坚持真的是很难的一件事,其它事情稍忙,就很容易说服自己把写博客的计划给推迟了. 好在终于克服了自己的惰性,今天又开始了. 本篇继续我的Luaframework学习之路. 一. ...

  7. Unity3D热更新之LuaFramework篇[08]--热更新原理及热更服务器搭建

    前言 前面铺垫了这么久,终于要开始写热更新了. Unity游戏热更新包含两个方面,一个是资源的更新,一个是脚本的更新. 资源更新是Unity本来就支持的,在各大平台也都能用.而脚本的热更新在iOS平台 ...

  8. Unity3D热更新之LuaFramework篇[01]--从零开始

    前言 因工作关系,需要对手头的项目进行热更新支持.了解后发现,Lua的几个变种:XLua.ToLua(原uLua)和Slua都可以做Unity热更,而ToLua更是提供了一个简易的热更框架--LuaF ...

  9. Unity3D热更新全书-下载 唯一的一篇

    下载在这个时代实在是太平常了,每个人都深刻的理解着下载到底是什么. 这一篇文字只是把下载的代码分享并介绍,而已. 首先,下载系统担负着几个使命. 第一.是保持客户端版本库的最新. 第二.是下载要能够比 ...

随机推荐

  1. ubuntu 中 搭建 C编程环境

    在 ubuntu 中 使用 快捷键 Ctrl + Alt + T 打开 终端 在终端输入 gcc 查看 有没有安装 gcc (c语言的编译器) ( 我这里是 已经 安装 好的 ) 进行 安装 gcc ...

  2. 题解 [CF961G] Partitions

    题面 解析 首先我们观察这个定义, 可以发现每个元素在统计答案时是平等的, 也就是单个元素的权值对答案没有特别的影响. 设元素权值为\(w[i]\), 那么我们就可以知道答案是\(\sum_{i=1} ...

  3. while循环与do. . . while循环语句

    ㈠导入 向页面中输出连续的数字 var n = 1; document.write(n++ +"<br />"); ㈡while循环 ⑴循环语句:通过循环语句可以反复的 ...

  4. 洛谷P4979 矿洞:坍塌

    洛谷题目链接 珂朵莉树吼啊!!! 又是一道水题,美滋滋~~~ $A$操作完全模板区间赋值 $B$操作也是一个模板查询,具体看代码 注意:读入不要用$cin$,会$T$,如果你是大佬,会玄学东西当我没说 ...

  5. 路由器配置——广播多路访问链路上的OSPF

    一.实验目的:作广播形式的OSPF,了解DR与BDR之间的链路关系 二.拓扑图: 三.具体步骤配置 (1)R1路由器配置 enableconfigure terminalhostname R1inte ...

  6. 2018CCPC桂林站G Greatest Common Divisor

    题目描述 There is an array of length n, containing only positive numbers.Now you can add all numbers by ...

  7. IN和EXISTS、not in 和not exists的效率详解

    从效率来看: 1) select * from T1 where exists(select 1 from T2 where T1.a=T2.a) ; T1数据量小而T2数据量非常大时,T1<& ...

  8. django基础教程(一)

    Django是一个开源的网站框架,mvc模式.提供了开发网站经常用的模块 优势:1.数据库 2.用正则匹配网址,传到对应的函数 3.后台 4.模板系统,与样式分开 5,缓存 Diango的组成:1.u ...

  9. curl_setopt(ch, option, value)函数上传文件

    bool curl_setopt ( resource $ch , int $option , mixed $value ) 为给定的cURL会话句柄设置一个选项 详细介绍请到:http://www. ...

  10. Redis 的配置

    Redis 的配置文件位于 Redis 安装目录下,文件名为 redis.conf. 你可以通过 CONFIG 命令查看或设置配置项. 语法 Redis CONFIG 命令格式如下: redis 12 ...