Unity打包同一文件Hash不一樣


問題起因

游戲開發基本都會涉及到資源版本管理及更新,本文記錄我在打包過程中遇到的一小問題:

開過中常用於標記資源版本的方法有計算文件HashVCS的版本等。

在Unity中對同一個資源文件進行多次打包(AssetBundle),發現每次打出ab文件的Hash值都不一樣。

這不科學啊?打包同一文件多次Hash值不一樣,這對於用Hash來標記版本的方法基本是廢了。

我的Unity版本:Unity4.X

查資料發現:AssetBuildPipeline.BuildAssetBundle接口options參數,可以增加一項BuildAssetBundleOptions.DeterministicAssetBundle。這將保證AssetBundle使用唯一Hash進行標識,若不加這個參數AssetBundle每次構建時都生成不同ID。

打包腳本

下現貼一個我簡單打包腳本:

[MenuItem("Tools/打包 setting_client")]
public static void BuildWd_SettingClient()
{
    var setting_client = AssetDatabase.LoadAssetAtPath("Assets\\setting_client.bytes", typeof(Object));
    //NOTE 這個路徑寫死先
    var savePath = @"e:\xxx_online\data\setting_client.ab";
    if (setting_client != null)
    {
        BuildPipeline.BuildAssetBundle(setting_client, null, savePath,
            BuildAssetBundleOptions.UncompressedAssetBundle | BuildAssetBundleOptions.CompleteAssets |BuildAssetBundleOptions.DeterministicAssetBundle,
            BuildTarget.StandaloneWindows);
        Debug.Log("打包成功,文件在:" + savePath);
    }
    else
    {
        Debug.LogError("請檢查,找不到 setting_client.bytes ");
    }
}

 

資料文獻

Hash MD5 CRC 知識

部分內容參考自:http://blog.dou.li/Unity3D-AssetBundle-Build-Hash-No-Same.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM