前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >热更新

热更新

作者头像
祝你万事顺利
发布2019-06-05 17:09:33
1.8K0
发布2019-06-05 17:09:33
举报
文章被收录于专栏:Unity游戏开发Unity游戏开发

什么是热更新? 不停机更新,实时更新。HotUpdateHotFix Unity中需要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<TextAsset>("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 没有知名项目,代码质量较好,可以阅读源码 使用静态方法 缺点同ToLua C#Light 使用较少 XLua Tencent开发开源热更新插件 最大优点 平时开发使用C#,遇到有错误的或者有问题需要热修复热更新的时候,才对需要热更的脚本方法进行处理。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.06.03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据保险箱
数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档