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

>原理

現(xiàn)在的手游安裝有幾種方式。一種是安裝的時候就把程序和資源安裝到本地。另外一種是只安裝程序和少量的必要資源,然后在啟動的時候再把缺少的資源下載完整。手游一般不建議和傳統(tǒng)頁游一樣,在運行過程中加載資源,那樣做會導(dǎo)致用戶體驗會比較差些。上述的兩種安裝模式,在更新資源上本質(zhì)都是相同的。都是比較服務(wù)器資源的版本和本地資源的版本,以確定哪些資源要下載(包括需要更新的和新增的)。

>流程

1、資源打包

資源打包之前,要先規(guī)劃好資源之間的相互依賴關(guān)系。把一些共性的東西抽取出來,盡量減少不必要的耦合。一些比較好的做法有,所有物件盡可能做成Prefab,場景上的東西越少越好,“一切都是動態(tài)加載”。關(guān)于資源打包,我推薦使用Assetbundle進行文件打包,當(dāng)然一些json配置表之類的,其實可以不需要使用Assetbundle打包。
Assetbundle打包的流程在unity5.4之后已經(jīng)非常簡單,下面給出打包的一些流程細節(jié)和代碼:
①打包代碼

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

②打包的細節(jié)流程


選擇需要打包的預(yù)設(shè)體.png
更改預(yù)設(shè)體的Assetbundle名和后綴.png

這些完成后點擊上圖面板上的AssetBundle下的Bulid AssetBundles,此時會將生成好的AB包(Assetbundle包以下簡稱AB包)存到我代碼中設(shè)置的文件夾下。如下圖:

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

關(guān)于文件的MD5,這里就不詳細描述了。大家可以簡單理解它為一個文件的狀態(tài)標記。如果文件有更改,那么它的md5一定是改變的,單純的移動文件是不會更改的。md5驗證還可以起到安全驗證的作用,保證本地文件不被篡改。舉個例子,我們經(jīng)常從網(wǎng)上上下載軟件時,一般都會給出一個md5值,你下載后,對比一下已下載文件的md5值,就可以知道文件有沒有被篡改。在版本發(fā)布時,我們需要對所有打包好的文件計算md5值,然后保存在一個配置文件中。關(guān)于這部分的工作,我之前寫過一個可視化小工具(http://pan.baidu.com/s/1hswuwr6 密碼:i8ll),現(xiàn)在分享給大家。
下載后可以得到一個可執(zhí)行的exe,點擊這個exe之后窗口如下:

MD5生成器.png

在窗口中輸入需要更新的文件夾的路徑,點擊生成即可,我的需要更新的文件在Assets>StreamingAssets>UpdateRes下。

3、保存本地資源
4、下載資源
5、比較資源
6、更新本地資源
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容