生成AssetBundle
新建一个Cube和Capsule,命名如图
然后生成预制体,新建AssetBundle
新建一个Editor文件夹(这个是必须的),然后在目录下创建C#脚本:
using UnityEditor;
using System.IO;
public class CreateAssetbundles:Editor
{
[MenuItem("AssetsBundle/Build AssetBundles")]
static void BuildAllAssetBundles()//进行打包
{
string dir = "AssetBundles";
//判断该目录是否存在
if (Directory.Exists(dir) == false)
{
Directory.CreateDirectory(dir);//在工程下创建AssetBundles目录
}
//参数一为打包到哪个路径,参数二压缩选项 参数三 平台的目标
BuildPipeline.BuildAssetBundles(dir, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows64);
}
}
保存之后编辑器菜单栏就回出现对应按钮如下图:
点击之后就在工程目录对应文件下生成AssetBundle文件:
加载AssetBundle
在Hierarchy面板新建一个空物体,创建一个加载AssetBundle的脚本,脚本内容如下:
using UnityEngine;
public class LoadFromFileExample : MonoBehaviour
{
private void Start()
{
//通过文件路径加载对应的包
AssetBundle ab = AssetBundle.LoadFromFile("AssetBundles/scene/wall.unity3d");
GameObject wallPrefab = ab.LoadAsset<GameObject>("CubeWall");
//实例化预制体
Instantiate(wallPrefab);
//加载所有包,然后遍历实例出来
//Object[] objs = ab.LoadAllAssets();
//foreach (var item in objs)
//{
// Instantiate(item);
//}
}
}