一 ,  准备制作一个AB包(以预制体为例)

        a, 制作1个胶囊体预制体

Unity之AssetBundles基础_AB

          b, 设置预制体CapsuleAB为AB包

               1, 进入CapsuleAB的"Inspector"面板

               2, 设置AssetBundle如下所示

Unity之AssetBundles基础_Unity3D_02

 

        ①, ab/good    ,   ab为文件夹  good为生成AB文件的名称

        ②, 后面的ab 可以理解为good文件的格式. 如下图所示:

Unity之AssetBundles基础_Unity3D_03

 

二 , 制作AB包

1, 核心代码:

using System.IO;
using UnityEditor;
using UnityEngine;

public class CreateAssetBundles : MonoBehaviour
{
    [MenuItem("AlexHu/Build AssetBundles")]
    static void BuildAllAssetBundles()
    {
        string assetBundleDirectory = "AssetBundles";
        if(!Directory.Exists(assetBundleDirectory))
        {
            Directory.CreateDirectory(assetBundleDirectory);
        }
        BuildPipeline.BuildAssetBundles(assetBundleDirectory, 
                                        BuildAssetBundleOptions.None, 
                                        BuildTarget.StandaloneWindows);
    }
}

注解:

①, assetBundleDirectory : 将生成的AB资源放在项目更目录下(并非Assets目录下) , 如上面的ab/good , 就是在assetBundleDirectory 下生成一个ab文件夹, 将good放在ab文件夹中

②, 要将 CreateAssetBundles 放在Assets/Editor文件夹下.

Unity之AssetBundles基础_Unity3D_04

③, 这样 Unity IDE上会出现AlexHu的菜单, 操作 AlexHu -> Build AssetBundles 就可以生成AB包了

Unity之AssetBundles基础_Unity3D_05

 

三 , 使用AB资源(本次使用本地加载方式:AssetBundle.LoadFromFile为例)

代码如下:

using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
/// <summary>
/// 简单的AB,从本地加载
/// </summary>
public class ABSimpleDemo : MonoBehaviour
{
    private void Start()
    {
        AssetBundle ab = AssetBundle.LoadFromFile("AssetBundles/ab/good.ab");
        GameObject go = ab.LoadAsset<GameObject>("CapsuleAB");
        GameObject prefab =  Instantiate(go);
        prefab.transform.parent = this.transform;
    }
}

 

scene: 

Unity之AssetBundles基础_Unity3D_06

 

四, 结果

Unity之AssetBundles基础_AB_07