热更新

作者: 祝你万事顺利 | 来源:发表于2019-06-03 14:24 被阅读0次

什么是热更新?
不停机更新,实时更新。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#,遇到有错误的或者有问题需要热修复热更新的时候,才对需要热更的脚本方法进行处理。

相关文章

  • 热更新

    参考文章 https://www.jianshu.com/p/2f356e3276b8

  • 热更新

    热更新技术背景 1.热更新定义,APP热更新,就是指软件不通过苹果APP Store的版本更新审核,直接可以自行更...

  • 热更新

    mono热更新 更新过程中强退导致dll损坏 问题的产生是这样的:我们的代码文件随着开发会越来越打,当更新一个 d...

  • 热更新

    需要前端把更新后的代码生成chcp.manifest 第一部: npm i -g cordova-hot-...

  • 热更新

    腾讯热更新 https://gold.xitu.io/post/584a70feac502e00691c4a07 ...

  • 热更新

    一、安装CodePush CLI 在项目根目录下,安装命令: yarn add code-push-cli 安...

  • 热更新

    游戏更新分为两种,一种是游戏内热更,这个不分渠道,所有的游戏包都去游戏的热更服务器去加载资源(一般是资源文件和非底...

  • 热更新

    一.QQ空间超级补丁技术 二.阿里百川HotFix 三.美团Robust 四.微信Tinker 五.QFix

  • 热更新

    腾讯: http://fanhang.me/ios/iosre-geng-xin-ji-chu-ji-yu-bug...

  • 热更新

    Android热更新 修改线上版本的bug,用技术去实现不更新整个apk的条件下,修改掉bug。 在开发过程中,没...

网友评论

      本文标题:热更新

      本文链接:https://www.haomeiwen.com/subject/zrbqxctx.html