美文网首页
unity中的增量更新,详细流程,排坑教程(一)

unity中的增量更新,详细流程,排坑教程(一)

作者: 半闲书屋半闲人 | 来源:发表于2017-04-25 18:04 被阅读1232次

    >原理

    现在的手游安装有几种方式。一种是安装的时候就把程序和资源安装到本地。另外一种是只安装程序和少量的必要资源,然后在启动的时候再把缺少的资源下载完整。手游一般不建议和传统页游一样,在运行过程中加载资源,那样做会导致用户体验会比较差些。上述的两种安装模式,在更新资源上本质都是相同的。都是比较服务器资源的版本和本地资源的版本,以确定哪些资源要下载(包括需要更新的和新增的)。

    >流程

    1、资源打包

    资源打包之前,要先规划好资源之间的相互依赖关系。把一些共性的东西抽取出来,尽量减少不必要的耦合。一些比较好的做法有,所有物件尽可能做成Prefab,场景上的东西越少越好,“一切都是动态加载”。关于资源打包,我推荐使用Assetbundle进行文件打包,当然一些json配置表之类的,其实可以不需要使用Assetbundle打包。
    Assetbundle打包的流程在unity5.4之后已经非常简单,下面给出打包的一些流程细节和代码:
    ①打包代码

    using UnityEngine;
    using System.Collections;
    using UnityEditor;
    
    /// <summary>
    /// 将这个脚本放在Editor文件夹下,没有就新建一个
    /// </summary>
    public class HueyAssetBundle : MonoBehaviour {
        [MenuItem("AssetBundle/Bulid AssetBundles")]
        static void BuildAssetBundles()
        {
            //"Assets/StreamingAssets/UpdateRes"这个是打好的包在的位置
            BuildPipeline.BuildAssetBundles("Assets/StreamingAssets/UpdateRes", BuildAssetBundleOptions.CollectDependencies, BuildTarget.Android);
        }
    }
    

    这个脚本放在Editor文件夹下之后会在unity面板下,看到新增的选项如下图:


    Assetbundle自动打包生成器.png

    ②打包的细节流程


    选择需要打包的预设体.png 更改预设体的Assetbundle名和后缀.png

    这些完成后点击上图面板上的AssetBundle下的Bulid AssetBundles,此时会将生成好的AB包(Assetbundle包以下简称AB包)存到我代码中设置的文件夹下。如下图:

    自动打包生成的AB包.png
    2、生成版本MD5文件

    关于文件的MD5,这里就不详细描述了。大家可以简单理解它为一个文件的状态标记。如果文件有更改,那么它的md5一定是改变的,单纯的移动文件是不会更改的。md5验证还可以起到安全验证的作用,保证本地文件不被篡改。举个例子,我们经常从网上上下载软件时,一般都会给出一个md5值,你下载后,对比一下已下载文件的md5值,就可以知道文件有没有被篡改。在版本发布时,我们需要对所有打包好的文件计算md5值,然后保存在一个配置文件中。关于这部分的工作,我之前写过一个可视化小工具(http://pan.baidu.com/s/1hswuwr6 密码:i8ll),现在分享给大家。
    下载后可以得到一个可执行的exe,点击这个exe之后窗口如下:

    MD5生成器.png
    在窗口中输入需要更新的文件夹的路径,点击生成即可,我的需要更新的文件在Assets>StreamingAssets>UpdateRes下。
    3、保存本地资源
    4、下载资源
    5、比较资源
    6、更新本地资源

    相关文章

      网友评论

          本文标题:unity中的增量更新,详细流程,排坑教程(一)

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