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

 

 

 

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

3.如果需要打包的资源的AssetBundle名字存在层级结构,那么打包出来的ab包也会放在对应的层级结构目录下(需要打包的资源TestPrefab的ab包的名字设置为: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);
    }
}

 

上一篇:c# netcore http请求封装


下一篇:Unity2018打AssetBundle崩溃的解决办法