位置: 编程技术 - 正文

Unity3D热更新全书-何谓热更新,为何热更新,如何热更新(unityxlua热更新方案)

编辑:rootadmin
Unity3D热更新全书-何谓热更新,为何热更新,如何热更新

推荐整理分享Unity3D热更新全书-何谓热更新,为何热更新,如何热更新(unityxlua热更新方案),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:unity代码热更新方案,unity代码热更新方案,unity3d 热更新,unity热更流程,unity xlua热更新,unity热更流程,unity il2cpp热更新,unity3d 热更新,内容如对您有帮助,希望把文章链接给更多的朋友!

首先来赞叹一下中文,何谓为何如何,写完才发现这三个词是如此的有规律。

为何赞叹中文?因为这是一篇针对新手程序员的文字,是一节语文课。

然后来做一下说文解字,也就是

何谓热更新

热更新,每个程序员一听就明白,但是它语出何处,究竟表达了什么含义,到底代表了什么,对技术有什么要求,对经验相对较少的程序员来说可能就有一层神秘面纱了。

热更新,是对hot update 或者 hot fix的翻译,计算机术语,表示在不停机的前提下对系统进行更改。

hot 就是热,机器运行会发烫,hot就是不停机的意思。

热更新,是个很形象的词,机器烫的时候更新,开着更新。

比如Windows 不重启的前提下安装补丁

比如Http服务器在不重启的前提下换掉一个文件

那么对于Unity3D来说,何谓热更新?

额……这个真相实在是不想讲出来,因为很多时候,这个词都用错了。

Unity3D是一个客户端工具,用户是否重启客户端,根本是我们不关心的问题。

很多时候我们用着热更新这个词汇,却不需要真的热更新。

只有少部分游戏,游戏资源在玩的过程中边玩边下,不重启的前提下变更了资源。

我们不需要用户不重启客户端就能实现资源代码的更新,我们需要的是用户重启客户端能实现资源代码的更新。

让我们暂时放过这个我们的需求连词汇都用错了这个基本事实,来总结一下何谓Unity3D热更新

Unity3D热更新就是指:用户重启客户端就能实现客户端资源代码更新的需求或者功能。

为何热更新

热更新,能够缩短用户取得新版客户端的流程,改善用户体验。

没有热更新:

pc用户:

下载客户端->等待下载->安装客户端->等待安装->启动->等待加载->玩

手机用户:

商城下载APP->等待下载->等待安装->启动->等待加载->玩

有了热更新

pc用户:

Unity3D热更新全书-何谓热更新,为何热更新,如何热更新(unityxlua热更新方案)

启动->等待热更新->等待加载->玩

有独立loader的pc用户:

启动loader->等待热更新->启动游戏->等待加载->玩

手机用户:

启动->等待热更新->等待加载->玩

通过对比就可以看出,有没有热更新对于用户体验的影响还是挺大的,主要就是省去用户自行更新客户端的步骤。

为了方便用户、留住用户、进而从留住的用户身上赚到钱,热更新如今已经成为了大部分游戏的标配功能。

如果你的游戏不标配这个功能,那么竞争力就会少一些,无论是主动还是被动,无论是方便用户还是被标配,你都必须面对热更新这个课题,虽然这个词用错了。

如何热更新

热更新是为了让用户获得资源和代码的变更,这里的代码不是指真的代码,用户不要代码,他要的是变化的业务逻辑。实现变更的具体过程是首先查并更新本地资源和业务逻辑,如需下载则下载。然后启动时资源均从本地资源创建,业务逻辑从本地执行。

Unity3D提供了一种机制AssetBundle,可以满足所有资源的比对下载加载,但是assetbundle每平台分别打包对于多平台项目而言比较麻烦,是一个明显的短板,而且assetbundle不能脱离unityeditor产生,也是一个麻烦,项目大了话,多人合作,把所有资源都放入assetbundle明显降低效率。

对于代码,Unity3D是不提供变更机制的。但是Unity3D执行核心是Mono,也就是dotnet,dotnet有一种符号反射机制,可以直接加载一个dll,然后反射出其中的类型进行操作。符号和反射的主要问题是有些平台不能使用,比如ios wp8。另外dotnet有一种emit机制,可以运行时调用编译器对代码进行编译,他的问题也是平台不支持。

以上两点是Unity3D免费赠送给你的帮助

如果不能满足你的需求,你就需要自己搞定三个模块:

资源下载模块

当assetbundle不能满足需要时,我们需要自己建立检查更新需要则下载的机制,也就是资源下载模块。

这个资源下载模块应该有一个版本生成工具,我们将一组文件生成一个一个版本待下载。

有一个Unity3D用的下载模块,下载模块会首先检查服务器上的版本信息,和本地信息做比对,需要的文件则下载。

资源加载模块

然后需要建立自己的从下载保存在本地的文件中加载出资源的机制,也就是资源加载模块。

资源加载模块负责从下载的文件中加载出资源。

如果你希望游戏带有一份初始资源文件,这里有两种思路

一种是资源加载模块直接提供从包内文件和下载文件两种加载路径

一种是游戏第一次启动时,将包内文件全部copy到下载文件

脚本模块

当符号反射不能满足需求时,业务逻辑更新就只有套用脚本语言这一条路,也就是脚本模块。

虽然dotnet世界里有很多脚本可以用 ironRuby ironPython,可是在unity这个特定环境下全部不可用。

你可以使用的一个选择是lua,这个由魔兽世界采用作为界面脚本,从而红遍整个游戏行业,十年经久不衰的脚本。

unity有了很多lua的绑定库,也有了unilua这样的pure c#移植实现。

你还有一个选择是C#Light/Evil,他是C#语法的,pure c#实现的一门新生脚本语言,就是为了Unity3D逻辑热更新而生。

参考文章:

Genesis-3D,搜狐畅游的免费开源游戏引擎 在CSDN上看到了《搜狐畅游发布3D游戏引擎Genesis-3D基于MIT协议开源》的新闻,就把这个引擎下载安装了。用过Unity3d的朋友会发现,Genesis-3D的界面非常类

Unity3d 调整UI和粒子特效的层次关系 在Uniyt3d开发中,在UI上增加粒子特效是个很出彩的做法。但往往会遇到粒子特效与UI层次错乱的问题。下面分享一个自己的写得小的代码,轻松解决层次

Unity3d热更新(四):压缩文件 之前提到过通过AssetBundle.CreateFromFile读取本地AssetBundle,因为该方法只能读取未压缩的AssetBundle,所以打包AssetBundle时,需要选择BuildAssetBundleOptions.Uncompres

标签: unityxlua热更新方案

本文链接地址:https://www.jiuchutong.com/biancheng/375690.html 转载请保留说明!

上一篇:《炉石传说》架构设计赏析(1):游戏启动流程(炉石 xhope)

下一篇:Genesis-3D,搜狐畅游的免费开源游戏引擎(搜狐畅游手游官网)

  • 附加税的内容有哪些
  • 白酒和烟草 纳税总额
  • 员工加班误餐费怎么做凭证
  • 应收利息增加会计分录
  • 财产租赁合同金额含税吗
  • 财务金额表格
  • 公户网上转账怎么撤回
  • 汇算清缴的
  • 损益平准基金
  • 怎么看自己公司是一般纳税人还是小规模纳税人
  • 小微企业十万免税从什么时候开始
  • 社保费工商退费金额如何做会计分录呢?
  • 税务房屋租赁发票图片
  • 先取得发票后付款说明
  • 企业用于存货的支出
  • 处置子公司的收益
  • ppp项目是否纳入政府债务
  • 企业结转已销产品的生产成本
  • 租房提取的话可以全部提取吗
  • 职工福利费发票不小心抵扣了汇算清缴
  • 印花税滞纳金计入什么科目
  • 银行非保本理财420天有风险吗
  • 对公账户在税务局能查到吗
  • 子公司和母公司可以一起投标吗
  • 报税遇节假日延长吗?
  • 1697508432
  • 出口退税申报里汇率计算方式选择
  • 该内存不能为read,要终止程序
  • 2023年电子发票如何申领
  • 银行保证金账务处理流程
  • 公积金贷款额度查询计算器
  • uniqpp
  • 公司备用金申请单
  • win10怎么投影到手机
  • 土地增值税案例题库
  • 公司代扣税
  • 学生兼职收入按什么交个税
  • 员工出差垫钱
  • 权利许可证照印花税优惠政策
  • 瑞吉外卖项目简历
  • php解释器工作流程
  • bug的定位和跟踪
  • 职工食堂费用计入什么科目
  • c语言中有哪些循环结构
  • 行政事业单位福利费列支范围及标准2023
  • 福利部门的福利有哪些
  • 小微企业季度申报所得税税率
  • 厂房办公用品费用怎么算
  • 客户多付的货款计哪里
  • 企业每月应交哪几种税费
  • sql chr函数
  • 开了的发票应该如何在丁字帐里记录?
  • 预收账款是资产类科目吗
  • 所得税汇算调增后怎么改财务报表
  • 运输开票的税点是多少
  • 税务开票金额每个月有限制吗
  • 运输公司汽车折旧能直接进主营成本吗
  • 购买理财产品现金流量表
  • 合并报表时抵消内部交易包含的未实现损益的影响包括
  • 发票为什么被列为金额
  • 辅助生产费用如何判断受益多少事指什么
  • 商标注册费计入哪个科目
  • 通行费电子发票抵扣填写到附表二的第几栏次
  • windows怎么管理员权限
  • final cut pro能破解吗
  • linux中压缩文件
  • 在mac中运行exe
  • windows右键不能用了
  • win10教育版登录
  • cocos2d开发的知名游戏
  • Extjs TriggerField在弹出窗口显示不出问题的解决方法
  • JavaScript html5 canvas绘制时钟效果(二)
  • Javascript Object.extend
  • python运行flask
  • 广西税务软件
  • 新的国家税务局发票怎么冲红
  • 银行与企业之间的信用
  • 2020税控盘升级后怎么使用
  • 陕西电子税务电话是多少
  • 深圳为何
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设