AssetBundle学习及简单应用
1.制作并打包AssetBundle
①将游戏资源做成Prefab,并设置AssetBundle文件(Inspector面板最下方)
②创建Editor文件夹,里面创建打包AssetBundle专用脚本(CreateAssetBundle.cs)
③在CreateAssetBundle.cs中编写方法:
//在菜单栏中的位置地址,点击地址下的BuildAssetBundle键执行此方法
[MainItem("Asset/BuildAssetBundle")]
static void BuildAssetBundle()
{
//打包方法
//AssetBundles为assetbundle文件存放路径位置,若路径中没有该文件夹会报错
BuildPipeline.BuildAssetBundles("AssetBundles");
}
④打包后的文件中assetbundle.manifest中记录了所有AssetBundle文件名称(Name)及其依赖(Dependencies),各assetbundle文件中也会记录自身文件名称及依赖
2.下载及调用AssetBundle
①创建游戏物体AssetManager,并添加LoadAssetBundle.cs脚本
②在LoadAssetBundle.cs脚本中编写方法:
IEnumerator LoadAssetBundle()
{
//使用using(){}来调用www,是因为www要释放,而using可以帮助释放
//url为资源地址,本地文件中需加file:// ,服务器文件需加http://
using(WWW www = new WWW(url))
{
yield return www;
if(www.error!=null)
{
Debug.log("网络错误");
}
else
{
AssetBundle bundle = www.assetBundle;
//下方的assetbundle为需要加载的资源文件名
Object obj = bundle.LoadAsset(assetbundle);
Instantiate(obj);
//资源bundle用后需要释放,否则会占内存
//Unload(false) true:释放所有资源 false:释放已用资源
bundle.Unload(false);
}
}
}
1.制作并打包AssetBundle
①将游戏资源做成Prefab,并设置AssetBundle文件(Inspector面板最下方)
②创建Editor文件夹,里面创建打包AssetBundle专用脚本(CreateAssetBundle.cs)
③在CreateAssetBundle.cs中编写方法:
//在菜单栏中的位置地址,点击地址下的BuildAssetBundle键执行此方法
[MainItem("Asset/BuildAssetBundle")]
static void BuildAssetBundle()
{
//打包方法
//AssetBundles为assetbundle文件存放路径位置,若路径中没有该文件夹会报错
BuildPipeline.BuildAssetBundles("AssetBundles");
}
④打包后的文件中assetbundle.manifest中记录了所有AssetBundle文件名称(Name)及其依赖(Dependencies),各assetbundle文件中也会记录自身文件名称及依赖
2.下载及调用AssetBundle
①创建游戏物体AssetManager,并添加LoadAssetBundle.cs脚本
②在LoadAssetBundle.cs脚本中编写方法:
IEnumerator LoadAssetBundle()
{
//使用using(){}来调用www,是因为www要释放,而using可以帮助释放
//url为资源地址,本地文件中需加file:// ,服务器文件需加http://
using(WWW www = new WWW(url))
{
yield return www;
if(www.error!=null)
{
Debug.log("网络错误");
}
else
{
AssetBundle bundle = www.assetBundle;
//下方的assetbundle为需要加载的资源文件名
Object obj = bundle.LoadAsset(assetbundle);
Instantiate(obj);
//资源bundle用后需要释放,否则会占内存
//Unload(false) true:释放所有资源 false:释放已用资源
bundle.Unload(false);
}
}
}