Unity打包同一文件Hash不一样

简介:



 

问题起因

游戏开发基本都会涉及到资源版本管理及更新,本文记录我在打包过程中遇到的一小问题:

开过中常用于标记资源版本的方法有计算文件HashVCS的版本等。

在Unity中对同一个资源文件进行多次打包(AssetBundle),发现每次打出ab文件的Hash值都不一样。

这不科学啊?打包同一文件多次Hash值不一样,这对于用Hash来标记版本的方法基本是废了。

查资料发现: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


本文转自赵青青博客园博客,原文链接:http://www.cnblogs.com/zhaoqingqing/p/5439852.html,如需转载请自行联系原作者

相关文章
|
图形学 Android开发 iOS开发
|
编解码 程序员 atlas
Unity 之 图集属性详解和代码示例 -- 拓展一键自动打包图集工具
图集只是当所有给低昂的纹理需要相同的着色器时采用的一种方法,如果一些纹理需要通过着色器应用独立的图形效果,它们就必须分离到自己的材质中,并在单独的组中打图集。
1414 0
Unity 之 图集属性详解和代码示例 -- 拓展一键自动打包图集工具
|
4月前
|
缓存 API 图形学
【Unity 3D】AssetBundle打包、上传、加载、卸载详解及演示(附源码)
【Unity 3D】AssetBundle打包、上传、加载、卸载详解及演示(附源码)
77 0
|
4月前
|
算法 图形学 UED
【Unity 3D】AssetBundle工作流程、打包策略详解(超详细必看)
【Unity 3D】AssetBundle工作流程、打包策略详解(超详细必看)
71 0
|
4月前
|
存储 JSON C#
【Unity 3D】C#从JSON文件中读取、解析、保存数据(附源码)
【Unity 3D】C#从JSON文件中读取、解析、保存数据(附源码)
76 0
|
7月前
|
图形学 Android开发
Unity打包安卓报http请求错误
Unity打包安卓报http请求错误
70 1
|
Java 图形学
Unity打包符号表 使用ndk addr2line.exe+符号表 将崩溃内存地址解析成函数名
符号表的路径,符号表发布出来的时候是一个zip文件要把它解压出来,里面会有两个文件:arm64-v8a(64位)、armeabi-v7a(32位)不过unity默认打包出来的都是64位的程序,所以这个前面加上你的真实路径+arm64-v8a\libil2cpp.sym.so就可以了。
|
前端开发 API 图形学
Unity 实现批量Build打包
Unity 实现批量Build打包
224 1
Unity 实现批量Build打包
|
API 开发工具 图形学
Pico neo3 Unity打包设置
最近使用Pico的频率很高,想给一些Pico爱好者分享一下在Unity中想项目打包到Pico设备中
784 0
Pico neo3 Unity打包设置
|
存储 监控 Java
Android 打包AAB+PAD(Unity篇)(下)
Play Asset Delivery Unity API 集成 检索 AssetBundles 安装时交货 快速跟进和按需交付 检查状态 监控下载 大量下载 取消请求(仅限按需) 异步请求资产包 其他 Play Core API 方法 检查下载大小 移除 AssetBundles 测试 行为 限制 使用内部应用共享进行测试
616 0
Android 打包AAB+PAD(Unity篇)(下)