El valor hash empaquetado por Unity no es único.

La causa del problema

El desarrollo de juegos básicamente implica la gestión y actualización de versiones de recursos. Este artículo registra un pequeño problema que encontré durante el proceso de empaquetado:

Los métodos comúnmente utilizados para marcar versiones de recursos en desarrollo incluyen el cálculo de hash de archivos , versiones de VCS , etc.

Al empaquetar el mismo archivo de recursos ( AssetBundle ) varias veces en Unity, descubrí que el valor hash del archivo ab es diferente cada vez.

¿No es esto científico? Si el mismo archivo se empaqueta varias veces con diferentes valores hash, este método de usar Hash para marcar la versión es básicamente inútil.

Después de verificar la información, descubrí que se puede agregar un elemento a los parámetrosAssetBuildPipeline.BuildAssetBundle de la interfaz . Esto garantizará que AssetBundle esté identificado por un Hash único. Si no se agrega este parámetro, AssetBundle generará una ID diferente cada vez que se cree.optionsBuildAssetBundleOptions.DeterministicAssetBundle

guión de embalaje

Aquí está mi script de empaquetado simple:

Copiar código
[MenuItem( " Herramientas/打包 configuración_client " )]
 public  static  void BuildWd_SettingClient() 
{ 
    var configuración_client = AssetDatabase.LoadAssetAtPath( " Assets\\setting_client.bytes " , tipo de (Objeto));
    // NOTA 路径自己定义
    var savePath = @"d :\xxx_online\data\setting_client.ab " ;
    if (setting_client! = nulo ) 
    { 
        BuildPipeline.BuildAssetBundle(setting_client, nulo  , savePath,
            BuildAssetBundleOptions.UncompressedAssetBundle | BuildAssetBundleOptions.CompleteAssets | BuildAssetBundleOptions.DeterministicAssetBundle, 
            BuildTarget.StandaloneWindows); 
        Debug.Log( " Empaquetado exitoso, archivo en: " + savePath); 
    } 
    else 
    { 
        Debug.LogError( " Verifique, no se puede encontrar settings_client.bytes " ); 
    } 
}
Copiar código

 

Documentación

Conocimiento de Hash MD5 CRC

Se hace referencia a parte del contenido en: http://blog.dou.li/Unity3D-AssetBundle-Build-Hash-No-Same.html


Supongo que te gusta

Origin blog.csdn.net/qq_25189313/article/details/77930070
Recomendado
Clasificación