首先:编写一个处理AssetsBuddle(打包资源的按钮)的编辑器按钮;脚本如下:
Using UnityEngine;
Using System.Collections;
Using UnityEditor;//注意 要引入编辑器命名空间
Public class AssetBundleBuilder:Editor
{
[MenuItem("AB/Build")]
public static void Build()
{
string path = Application.streamingAssetsPath;
BuildPipeline.BuildAssetBundles(path);//将资源打包到这个路径下
}
}
然后我们来测试一下:
1:将你要打包的资源设置为预设体
2;将下面的脚本挂在到摄像机(灯光上也行,运行场景可以直接加载就行)上
using UnityEngine;
using System.Collections;
public class Test:MonoBehaviour
{
void Start()
{
StartCoroutine(LoadAB());//开启携程
}
IEnumerator LoadAB()
{
string path = "file://"+Application.streamingAssetsPath+"/leval";//打包后资源的路径
WWW www = new WWW(path);//通过携程加载资源,放到www里
yied return www;//等待加载完毕
AssetBundle ab = www.assetBundle;// 将打包后的资源放到 AssetBundle里面
GameObject obj = ab.LoadAsset("打包的资源名字") as GameObject;//加载ab中的一个预设体,占用预设体内存
Instantiate(obj);//加载物体占用实际内存
//关闭ab,清除无用内存(释放AssetBundle) false释放当前资源,true释放所有资源
ab.Unload(false);
}
}
通过以上操作 就可以删掉你原来的资源,Assets里面只留下Assets和Editor(存放第一个AssetsBundleBuilder脚本)就可以啦
运行场景可以通过AssetsBundle加载相应导报的资源到场景中;