打包
首先要对先要打包的资源起名字,如下图:第一个为打包后资源名称(加“/”可以添加子级目录),第二个可以理解为后缀(随意写),,
然后在Project面板下新建两个文件夹,“Editor”用来存放打包使用的脚本文件,,这个文件夹是不会跟随游戏发布出去的,,“AssetBuile”是自定义文件夹,用了存放打包好的资源文件,,,如下图:
然后编写如下脚本:
using UnityEngine;
using UnityEditor;
public class Ceaterab {
//拓展编辑菜单
[MenuItem("AssetsBundle/CreatAssetsBudles")]
static void CreateAsset(){
//存放打包好文件的路径
string dir = Application.dataPath + "/AssetBuild";
//将资源中命名的所有资源打包处理(参数:路径,有依附关系,安卓平台)
BuildPipeline.BuildAssetBundles(dir,BuildAssetBundleOptions.None,BuildTarget.Android);
}
}
点击AssetBundle下的子级按键即可完成打包文件,,在AssetBuile目录下即可查看,,
本地加载
编写一下脚本,挂载到游戏对象上,运行,,,即可加载出刚刚打包的包的内容,,,
using UnityEngine;
public class LoadAsset : MonoBehaviour {
// Use this for initialization
void Start () {
AssetBundle ab = AssetBundle.LoadFromFile(Application.dataPath+"/AssetBuild/wall.unity3d");
GameObject abObj = ab.LoadAsset<GameObject>("Cube");
Instantiate(abObj);
}
}
运行图:
- 读取的时候只需要写文件名称就可以了,可以理解为一个AB包就是一个文件夹,加载之后AB包之后,再加载具体的资源就不需要写路径。【这也是AB包中的资源不能重名的原因】