【 xiumi360.com - APP使用技巧 】
提起热更新这个词,很多人都是一头雾水,它究竟是干什么的呢?今天小编就为大家解答一下热更新是干什么的以及它的作用!
什么是热更新?
不停机更新,实时更新。HotUpdateHotFixUnity中需要APP重启真正热更新不重启就做更新
为什么做热更新?
改善用户体验(节省流量、时间、操作程度),补丁形式,不用玩家重复下载游戏,就可以对游戏做热修复。
如何做热更新?unity3d热更新的方法?
Android应用的热更新:1.将要执行的代码编译为库文件assembly dll.动态链接库通过反射的方式再Unity中加载被打包的dll文件并执行:将dll打包成AB包,通过www加载在AB包,通过反射获取到dll中的类
WWW www = WWW.LoadFromCacheOrDownload(Application.streamingAssetsPath + "/hot.u3d",6); yield return www; if(www.error != null) { print(www.error); yield break; } AssetBundle assetBundle = www.assetBundle; TextAsset textAsset = assetBundle.LoadAsset("HotFix"); Assembly assembly = Assembly.Load(textAsset.bytes); foreach (var item in assembly.GetTypes()) { print(item); gameObject.AddComponent(item); }
注意:Unity2017不支持.Net3.5以上
android与IOS热更新有什么相同点和不同点不同点:IOS不允许某些反射的高级功能,因此不能用DLL的方式做热更新(mono打包时,会自动将反射部分功能禁止)相同点:移动端做热更新都是使用Unity3D+lua插件或框架热更新需要注意的点:资源、代码包括Lua代码都要达成assetbundle包来使用注意几个重要的路径和文件夹:Resources(会被压缩,不管是否使用都会被打进APK,只可读)StreamingAssets(不会被压缩,持久化目录,只可读,不能坐热更新)Application.datapath(asset文件夹下面的路径,也不能做热更新)Application.persistentDataPath(持久化数据存储路径,沙盒文件夹,在打包之前此文件夹不存在。可读可写,没有任何内容限制,从服务器上下载的AB资源,都会放到这个文件夹下进行热更新)
加载资源流程
开始游戏->读取本地版本号信息->去服务器指定地址下载服务器版本号信息->对比两个版本号信息->如果不一致,从服务器上下载全部AB资源放入(持久化目录中去);
加载每个资源过程 第一步尝试从持久化目录中加载cube,如果不存在,即加载的为空,那么从StreamingAssets的文件夹中进行加载;
unity3D那些插件用于热更新?
ULua 基于反射 性能较差 效率低 速度慢 gcalloc频繁 停止维护只能支持到Unity3D 5.0以前ToLua 使用的人多 维护起来快 各种静态方法效率高 要被热更新的文件必须使用Lua代码写的SLua 没有知名项目,代码质量较好,可以阅读源码 使用静态方法 缺点同ToLuaC#Light 使用较少XLua Tencent开发开源热更新插件 最大优点 平时开发使用C#,遇到有错误的或者有问题需要热修复热更新的时候,才对需要热更的脚本方法进行处理。
有了热更新,app的安装更新就会更加便捷方便,这样子,大家就不用担心还要关机才能更新了,看完这些,大家懂的热更新了吗?
免责声明:本文内容源自网络,由用户上传,版权归原作者所有,本站不存储mp3等牵扯版权的文件,文字如有侵权请联系删除!
本文地址:http://www.xiumi360.com/bangong/1019.html