AssetBundle打包和加载_简单打包(一)

本文详细解析了在Unity中使用AssetBundle进行资源管理的最佳实践,包括如何为不同类型的资源(如3D模型、材质和贴图)设定正确的打包标记,以优化依赖关系和文件大小。同时介绍了层级结构对打包路径的影响及AB包依赖信息的存储方式。
摘要由CSDN通过智能技术生成

 

 

如果要打包成assetbundle,都要预先对资源进行做标记

1.如果对一个3d模型进行打包,而不对其对应的材质球进行打ab包,那么这种依赖关系是没有什么效果的,如果说我们想去解决ab包的依赖关系的话,至少要细化到材质球,细化到模型是没有用的,当然也可以细化到贴图,但一般来说细化到材质球就可以了,日常的开发中,一个贴图对应一个材质,所有细化到材质球就可以了

3.如果需要打包的资源的AssetBundle标记名字存在层级结构,那么打包出来的ab包也会放在对应的层级结构目录下(需要打包的资源TestPrefab的标记名字设置为:Download/Prefab/TestPrefab,其打出来的ab包也会放在对应的download/prefab目录下)

4.设置ab包标记的名字一律被认作小写字母,大小会自动转化为小写,一般普通ab包的后缀为:*.assetbundle,场景的后缀为:*.unity3d

5.ab包总的依赖关系信息文件会放在根目录下,名字与根目录的文件夹名称一样,名字如:MyAssetBundle.manifest

 

如果一个预制prefab包含 prefabA和prefabB两个子物体,并且 prefabA和prefabB两个子物体各自都有属于自己的模型,材质和贴图

1.如果只设置prefab预制的AssetBundle名字,并且打包,那么打出来的prefab 对应的ab包将会很大,其实是把所有依赖于自身的资源都打进一个包里面,

包括自身以及子物体依赖的所有可打包的资源(模型,材质球,贴图)

2.如果设置prefab预制和 prefabA,prefabB两个子物体对应的模型 AssetBundle名字,并且打包,那么打出来的prefab对应的 ab包也会很大,相对来说是小了,但也没有小很多;两个子物体对应的模型的ab包也很大

3.如果设置prefab预制和 prefabA,prefabB两个子物体的对应的模型,材质球 AssetBundle名字,并且打包,那么打出来的prefab对应的 ab包将会变的很小,两个子物体对应的模型的ab包也很小,但是两个子物体对应的材质球的ab包会很大(说明这种打包方式,对于依赖关系来说是可行的)

3.如果对prefab预制所依赖的所有资源都进行ab打包,打出来的ab包中,除了贴图的ab包很大,其他的ab包都比较小(说明这种打包方式也是可行的)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using System.IO;

public class CreateAssetBundle{

    [MenuItem("Tools/CreateAssetBundle(对所有ab资源进行打包)")]
    static void CreateAB()
    {
        string savePath = Application.dataPath + "/../MyAssetBundles/";

        if (!Directory.Exists(savePath))
        {
            Directory.CreateDirectory(savePath);
        }
        Debug.Log("创建ab资源, CreateAssetBundle");

        BuildPipeline.BuildAssetBundles(savePath, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows);

        Application.OpenURL(savePath);
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值