热更新
1.什么是热更新?
热更新,顾名思义就是就是让开发者,可以在不用发布新版本的下,对已经发布的游戏的内容进行更改。
打个比方,如果你发布的游戏出现了一个恶劣的bug需要紧急修复,但是一个游戏新版本发布到送审结束往往需要经历很长的时间,(尤其是国内这种烂环境),但是往往不可能等到那么久时间,所以热更新就出现了。
2.热更新的特点
快速迭代:开发者可以快速修复bug或添加新功能,而不必等待应用商店的审核流程。
用户体验:用户无需重新下载整个应用程序即可获得更新,这可以减少等待时间和数据使用。
即时更新:可以在发现问题时立即推送更新,减少问题对用户的影响。
3.热更新的技术
目前主流的热更新是Xlua,因为这个是腾讯开发出来的,很多企业想和腾讯沾点关系,所以都采用了这个,XLua需要学习Lua语言,也需要Lua虚拟机,成本比较高。
另一种就是支持使用C#进行热更新ILRuntime,不过需要适配ILRuntime和mono虚拟机,适配困难,在性能上也要比起今天讲的要差一些。
HybridCLR就是今天讲的热更新技术之一,在性能使用都要比前两者来的方便的多。
HybridCLR
官方介绍:HybridCLR | HybridCLR
安装教程:快速上手 | HybridCLR
由于对于上手和本地热更新的例子在官方已经有比较详细的安装和操作说明,所以我不在多做解释。
远程热更新
不过官方的上手例子是本地热更新的,没有远程热更新,而往往在这个过程中其实是要踩很多坑的。所以这里我就拿我目前学习到的知识,讲述远程热更新应该如何操作。
1.使用Addressable打包
首先开始前打开包管理器,然后安装Addressable插件,然后在windows[窗口]/Asset Management[资产管理]中看到Addressable这个选项了,选择Group[组]就会弹出一个窗口,创建一个默认组,你就对你的资源进行资产管理了
如果你学习过AB包,即Assets Bundle那么就很好理解,Addressable是Unity官方在Assets Bundle上的新版替代。没学习过也不要紧,这对于你接下来使用Addressable不够成影响。
Addressable中,你可以就将大部分资产(除了C#脚本不能直接打包,因为这些是C#是编译型语言,需要编译后才能运作,这也是早期热更新采用动态语言Lua的原因)拖拽或者在资产上面的小按钮addressable来将资产安排到组中。你也可以右键[Create New Group]添加属于自己的组,进行分类管理,或者添加标签,建议所有的资产都简化或者修改一下名字便于之后的调用(建议一定要添加一个所有资源都共享的标签,这对之后热更新文件有非常大的作用)。
然后打开上图的Manage Profiles,就会打开配置界面
第一个是本地配置,第二是远程配置路线,一般第一个不用管,而第二个远程Remote中在实际开发中Remote.BulidPath则需要修改为你实际上远程用于存放资源的位置,不过学习阶段你改为任意一个目录下加[BuildTarget],这个目录是之后资源打包后放置的路径,通常这个路径是和Assets同级的目录,完成打包操作后,右键Assets文件Show in Explorer[在资源管理器中查看]快速查看生成的目录。
对于远程第二个则是资源获取的路径,如果是正式的开发那么就是你的服务器地址也就是和Remote.BulidPath一样的路径,不过一般的学生党咋可能有自己的服务器?不用担心,Addressable帮你准备了一个
之后就会打开一个窗口,里面有各种关于本地服务器的设置,启动时需要点击Enable,但是我不推荐使用这个,因为管理很不方便而且对于后续的文件下载情况无法很好的观察。我推荐使用HFS来进行这个操作,你只需要把生成的资源文件拖拽到对应的目录下就可以轻松的使用了,只要把一眼丁真那句话替换为你实际开发过程中的IP地址与端口号