博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
xLua(一)——介绍
阅读量:1985 次
发布时间:2019-04-27

本文共 1176 字,大约阅读时间需要 3 分钟。

一:什么是热更新?

热更新是指当游戏出现bug,或者需要修改,增加某个功能的时候,我们不需要重新下载安装包,就可以更新游戏内容

游戏上线后,遇见bug或者需要更新内容,一般有两种做法:
第一种:重新打包上传一个新的安装包到应用商店(需要审核,费时间),然后让玩家下载新的客户端安装包(需要重新下载,费流量)
第二种:在游戏内更新,游戏启动时去下载需要更新的资源
第一种我们一般称为游戏大版本更新,第二种称为热更新
例如一个用Unity制作的游戏,脚本是用C#编写的,现在游戏中有一个地方的数值需要修改,也许只有几KB,但是因为是用的C#语言(必须重新编译为dll文件才可以,不能在移动平台直接替换)所以必须重新打成安装包发布,显然重新发布下载安装很没有意义,但是如果是用Lua语言编写的,则可以在移动端直接替换,不需要重新编译


二:实现热更新方案的插件

大部分的热更新实现都基于Lua这个语言,之前介绍过,因为Lua轻量小巧,跨平台,易扩展,最重要的是用Lua编写的脚本修改后可以在移动端直接替换运行,不像C#需要重新编译

1.C#Light:

是框架作者开发的一种小巧的脚本语言(不是基于Lua语言的),能在各个平台实现热更新,但该框架早已停止维护
2.利用C#的反射:
这种方式只支持windows以及安卓这种支持JIT的平台,对于IOS就不适用了,IOS这种Full-AOT的平台不支持生成新的代码,因此这种热更方式很少用到
3.uLua:
是Lua的第一款插件,但是现在已经停止更新不再维护
4.sLua:
代码质量好(代码比toLua代码更清晰),但是性能低于toLua。
5.toLua:
uLua停止更新后出现的新的热更新插件,基于toLua作者开发了一款luaframework,目前比较主流
6.ILRuntime:
是掌趣科技开发的开源unity热更框架, 这个框架打破了C#不能做ios平台热更的规则(在ios平台中是以ILRuntime+dll的方式解释执行,当然是在IL2CPP下)。有了这个框架,开发者只需使用C#这一种语言即可,而不用在C#和lua之间切换,但这个框架也是有很多坑的,在一些方面性能是不如lua的,Git上的贡献者也很少,暂时没有经过大量项目的考验,用的人相对还是比较少
7.xLua:
腾讯开发的Lua插件,目前比较主流


三:xLua

xLua是腾讯开发的开源Lua插件,它为Unity,.Net,Mono等C#环境增加Lua脚本编程的能力,借助xLua可以使lua代码与C#相互调用


四:使用xLua实现热更新的方案

游戏中的更新包括资源更新(UI,Audio等)和代码更新,资源可以通过打AB包放在服务器上,Lua代码可以直接放在服务器端,玩家启动游戏时会去服务器端检查更新进行替换(使用MD5校验)

转载地址:http://xtyvf.baihongyu.com/

你可能感兴趣的文章
手把手教你--jsp读取配置文件(properties文件)--(JSTL的fmt:setBundle和fmt:message读取properties文件)
查看>>
solr修改schema文件(solr修改配置文件)
查看>>
select下拉框分组展示插件的使用--(select-mania插件的使用)
查看>>
Java Lambda表达式的应用--Stream API操作集合框架
查看>>
solr的使用详解
查看>>
Myslq连接(JDBC)url属性的参数的设置
查看>>
关于Spring MVC与前端的交互
查看>>
大厂经典面试题:Redis为什么这么快?
查看>>
花了 500块大洋 ,买来的677页Java性能调优笔记,感觉4年Java性能调优都白学了
查看>>
Android之Retrofit基本用法篇
查看>>
Netty与网络协议资料整理
查看>>
设置Golang的开发环境
查看>>
Golang 逃逸分析
查看>>
golang实现大数据量文件的排序
查看>>
golang中的time包
查看>>
2019NOIP D4题 加工领奖
查看>>
2021.5.19 JS高级第二天
查看>>
啊沙发沙发
查看>>
SpringBoot内置Tomcat配置参数
查看>>
局部加权回归
查看>>