打包代码 (放到Editor目录下)
using System.IO;
using UnityEditor;
public class CreateAssetBundle {
[MenuItem("Assets/Build AssetBundles")]
static void BuildAllAssetBundles()
{
//路径
string assetBundleDirectory = "BuildAssetBundles";
//判断是否存在这个路径如果不存在就创建这个路径
if (!Directory.Exists(assetBundleDirectory))
{
Directory.CreateDirectory(assetBundleDirectory);
}
//第一个参数 路径 第二个参数 设置build选项 第三个参数 打包平台
BuildPipeline.BuildAssetBundles(assetBundleDirectory,BuildAssetBundleOptions.None,BuildTarget.StandaloneWindows64);
}
}
加载AssetBundle(如果场景中已存在AB包中的物体 会报错)
using UnityEngine;
public class Test_1 : MonoBehaviour {
void Start () {
//加载AB包
//指定AB包的路径 加载文件
AssetBundle ab = AssetBundle.LoadFromFile("BuildAssetBundles/scenes/wall.unity3d");
//从ab包中加载gameobject
GameObject wallPrefab = ab.LoadAsset<GameObject>("Cube");
//创建物体
Instantiate(wallPrefab);
//加载Ab包中的所有物体
//object[] objs = ab.LoadAllAssets();
//foreach (object item in objs )
//{
// Instantiate(item);
//}
}
}