Unity3D热更新之LuaFramework篇[10]--总结篇
背景
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]--总结篇的更多相关文章
- Unity3D热更新之LuaFramework篇[03]--prefab加载和Button事件
在上一篇文章 Unity3D热更新之LuaFramework篇[02]--用Lua创建自己的面板 中,我介绍了LuaFramework加载面板的方法,但这个方法并不适用于其它Prefab资源,在这套框 ...
- Unity3D热更新之LuaFramework篇[02]--用Lua创建自己的面板
在上篇文章 Unity3D热更新之LuaFramework篇[01]--从零开始 中,我们了解了怎么获得一个可用的LuaFramework框架. 本篇将我会先介绍一下如何配置Lua开发环境,然后分析在 ...
- Unity3D热更新之LuaFramework篇[07]--怎么让unity对象绑定Lua脚本
前言 在上一篇文章 Unity3D热更新之LuaFramework篇[06]--Lua中是怎么实现脚本生命周期的 中,我分析了由LuaBehaviour来实现lua脚本生命周期的方法. 但在实际使用中 ...
- Unity3D热更新之LuaFramework篇[09]--资源热更新与代码热更新的具体实现
前言 在上一篇文章 Unity3D热更新之LuaFramework篇[08]--热更新原理及热更服务器搭建 中,我介绍了热更新的基本原理,并且着手搭建一台服务器. 本篇就做一个实战练习,真正的来实现热 ...
- Unity3D热更新之LuaFramework篇[05]--Lua脚本调用c#以及如何在Lua中使用Dotween
在上一篇文章 Unity3D热更新之LuaFramework篇[04]--自定义UI监听方法 中,我对LuaBehaviour脚本进行了扩展,添加了两个新的UI监听方法,也提到最好能单写一个脚本处理此 ...
- Unity3D热更新之LuaFramework篇[04]--自定义UI监听方法
时隔一个多月我又回来啦! 坚持真的是很难的一件事,其它事情稍忙,就很容易说服自己把写博客的计划给推迟了. 好在终于克服了自己的惰性,今天又开始了. 本篇继续我的Luaframework学习之路. 一. ...
- Unity3D热更新之LuaFramework篇[08]--热更新原理及热更服务器搭建
前言 前面铺垫了这么久,终于要开始写热更新了. Unity游戏热更新包含两个方面,一个是资源的更新,一个是脚本的更新. 资源更新是Unity本来就支持的,在各大平台也都能用.而脚本的热更新在iOS平台 ...
- Unity3D热更新之LuaFramework篇[01]--从零开始
前言 因工作关系,需要对手头的项目进行热更新支持.了解后发现,Lua的几个变种:XLua.ToLua(原uLua)和Slua都可以做Unity热更,而ToLua更是提供了一个简易的热更框架--LuaF ...
- Unity3D热更新全书-下载 唯一的一篇
下载在这个时代实在是太平常了,每个人都深刻的理解着下载到底是什么. 这一篇文字只是把下载的代码分享并介绍,而已. 首先,下载系统担负着几个使命. 第一.是保持客户端版本库的最新. 第二.是下载要能够比 ...
随机推荐
- Codeforces Good Bye 2017 908F F. New Year and Rainbow Roads
题 OvO http://codeforces.com/contest/908/problem/F CF 908F 解 需要注意细节的模拟题. 如果三种颜色都存在,则记每两个相邻的G组成一个段,对每个 ...
- MFC 下拉框Combo Box
下拉框常用的事件是Change事件.属性常用:Data(英文;分隔),Sort(是否排序) // OnInitDialog()中 m_cbx.SetCurSel();//设置默认选项 //OnBnCl ...
- JVM(十一),垃圾回收之老年代垃圾收集器
十一.垃圾回收之老年代垃圾收集器 1.Serial Old收集器(标记整理算法-单线程-Client模式下) 2.Paraller Old收集器(标记整理算法-多线程-) 3.CMS收集器(标记清除算 ...
- learning armbian steps(9) ----- armbian 源码分析(四)
在上一节的分析当中,我们知道是通过对话框来选择到底编译的是哪块板子,基于什么样的配置. 接下来我们来拿一个实例来分析一下具体的案例,我们会选中如下所示的版本 iotx-3 AM335X 1Gb SoC ...
- Intel Code Challenge Final Round D. Dense Subsequence 二分思想
D. Dense Subsequence time limit per test 2 seconds memory limit per test 256 megabytes input standar ...
- HGOI 20191105 题解
Problem A Joker 老虎和蒜头是好朋友. 夏天过去了,凉爽的秋天来临,老虎和蒜头又有了新的娱乐项目.老虎有一个远房表亲是西伯利亚虎,那里流行着一个纸牌游戏:两位玩家参与游戏,道具是一副54 ...
- Neo4j 简介 2019
Neo4j是一个世界领先的开源图形数据库,由 Java 编写.图形数据库也就意味着它的数据并非保存在表或集合中,而是保存为节点以及节点之间的关系. Neo4j 的数据由下面几部分构成: 节点边属性Ne ...
- Kernel Knights (Gym - 101480K)
题目链接 #include <bits/stdc++.h> using namespace std; typedef long long ll; int a[200005]; //存放原始 ...
- Django基础之初识视图
编写视图 一个视图函数,或者简短来说叫做视图,是一个简单的Python函数,它接受web请求,并且返回web响应. 响应可以是一个网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一 ...
- javascript中的类型转换,宽松相等于严格相等
为了将值转换为基本类型值(string,number,boolean,null,undefined),抽象操作ToPrimitive会首先检查该值有没有valueOf()方法,如果有并且返回基本类型值 ...
