AssetBundle打包

本文详细介绍了Unity中AssetBundle的打包方法,包括BuildPipeline.BuildAssetBundles的使用及参数说明。文中提供了两种打包方式:全部资源打包到一个AssetBundle和多个资源分别打包到不同的AssetBundle中。

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


关于AssetBundle打包


随着Unity的更新,之前的BuildPipeline.BuildAssetBundle()已经被弃用了。现在使用的是BuildPipeLine.BuildAssetBundles().目前看到的主要差别,BuildAssetBundle返回一个布尔值,而BuildAssetBundles返回的是AssetBundleManifest对象。

这个方法可以放在Editor中,使用[Menu(“Asset/BuildAssetBundle”)],声明一个方法BuildAssetBundle,方便直接进行调用。
BuildPipeLine.BuildAssetBundles()有两个重载

//全部打包进一个AssetBundle资源包中
public static AssetBundleManifest BuildAssetBundles(string outputPath, BuildAssetBundleOptions assetBundleOptions, BuildTarget targetPlatform);
//打包进几个资源包中
public static AssetBundleManifest BuildAssetBundles(string outputPath, AssetBundleBuild[] builds, BuildAssetBundleOptions assetBundleOptions, BuildTarget targetPlatform);

第一种:全部打包进一个资源包中

[MenuItem("Asset/BuildAssetBundle")]
    private static void BuildAssetBundle()
    {
        BuildPipeline.BuildAssetBundles("Assets/AB",BuildAssetBundleOptions.None,BuildTarget.StandaloneWindows64);
    }

(关于输出路径path:默认在Assets目录下,如果要放在一个单独的文件夹中,可以自定义输出路径,如”Assets/AssetBundles”。)

所有的AssetBundle文件被导出,还有一个.mainfest文件。这个文件提供了所打包资源的CRC和资源依赖信息,此外还有一个.mainfesr文件用来记录整个assetBundle文件夹信息(资源列表和各个列表之间的依赖关系)

第二种:打包进几个资源包中
下图是AssetBundleBuild里的关系

AssetBundleBuild

 [MenuItem("Asset/BuildAssetBundles")]
    private static void BuildAssetBundles()
    {
        //创建一个AssetBundleBuild数组
        AssetBundleBuild[] buildMap = new AssetBundleBuild[2];

        //给各个AssetBuildAsset进行命名
        buildMap[0].assetBundleName = "resources";
        buildMap[1].assetBundleName = "new bundle";


        //声明两个string数组,存储将要被打包资源的路径
        string[] assetPath1 = new string[2];
        string[] assetPath2 = new string[3];
        //下面是各个asset对应的资源的路径
        assetPath1[0] = "Assets/Objects/Cube.prefab";
        assetPath1[1] = "Assets/Objects/Sphere.prefab";
        assetPath2[0] = "Assets/Objects/Plane.prefab";
        assetPath2[1] = "Assets/Objects/Quad.prefab";
        assetPath2[2] = "Assets/Objects/Cylinder.prefab";

        //将路径进行赋值
        buildMap[0].assetNames = assetPath1;
        buildMap[1].assetNames = assetPath2;

        //打包资源
        BuildPipeline.BuildAssetBundles("Assets/AssetBundles",buildMap,BuildAssetBundleOptions.None,BuildTarget.StandaloneWindows64);
    }

通过上面方法,分类打包进几个资源包里。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值