Unity AssetBundle

本文详细介绍了Unity的AssetBundle机制,包括AssetBundle的作用、文件分类、分组策略、构建和加载方法,以及如何处理资源依赖和卸载。此外,还讨论了文件校验的重要性,如CRC、MD5和SHA1的差异及其应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#AssetBundle作用原理
把资源导出成一种叫做AssetBundle的文件,然后打包后可以在Unity程序运行的时候再加载回来用。
AssetBundle是采取某一种压缩方式压缩成的资源文件。节省存储空间,控制游戏包的大小,实现游戏的热更新。
在这里插入图片描述

AssetBundle文件分类

AssetBundle文件可以分为两类:序列化文件(serialized file)和资源文件(resource files)。
serialized file:资源被打碎放在一个对象中,最后统一被写进一个单独的文件(只有一个)。
resource files:某些二进制资源(图片、声音)被单独保存,方便快速加载。

AssetBundle分组策略

Ab分组策略:

  1. 逻辑实体分组
    1)一个UI界面 或 所有UI界面一个包(界面里的贴图和布局信息一个包)
    2)一个角色 或 所有角色一个包(这个角色里面的模型和动画一个包)
    3)所有的场景所共享的部分一个包(包括贴图和模型)
  2. 按照类型分组
    所有声音资源打成一个包,所有shader打成一个包,所有模型打成一个包,所有材质打成一个包
  3. 按照使用分组
    1)把在某一时间需要同时加载的所有资源打成一个包。可以按照关卡或场景划分,一个关卡或场景所需要的所有资源包括角色、贴图、声音等打成一个包
    2)把被其他包所共享的资源放在一个单独的包里面
    3)把经常更新的资源放在一个单独的包里面,跟不经常更新的包分离
  4. 版本更新分组
    如果对于一个同一个资源有两个版本,可以考虑通过后缀来区分,如v1/v2/v3.unity3d

在这里插入图片描述

BuileAssetBundles

AssetBundle使用相关API:BuildPipeline.BuildAssetBundles(dir, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows64);
结合Unity Editor使用如下:

#if UNITY_EDITOR
using UnityEditor;
using System.IO;

public class BulidAssetBundle
{
    //编辑器扩展,在菜单栏Assets下生成Build AssetBundles菜单
    [MenuItem("Assets/Build AssetBundles")]

    //进行资源打包
    static void BuildAllAssetBundles()
    {
       
        string dir = "AssetBundle";   //使用相对路径保存,文件夹AssetBundle在为工程目录下
        if (Directory.Exists(dir) == false)  //打包之前要保证文件夹存在,不存在的话会报错
        {
            Directory.CreateDirectory(dir);
        }

        //BuildPipeline是UnityEditor中用于打包的类,其中的BuildAssetBundle用于AssetBundle打包
        BuildPipeline.BuildAssetBundles(dir, BuildAssetBundleOptions.ChunkBasedCompression, BuildTarget.StandaloneWindows64);  
        //dir:存储的路径
        //BuildAssetBundleOptions:表示压缩式的算法
        //BuildTarget: 表示用于什么平台
    }

    /*关于BuildAssetBundleOptions的算法选择*/
    //Bui
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值