AssetBundles用于外部加载资源
主要有2种:
1.本地路径加载资源包
2.获取服务器的资源包加载
一、创建unity的官方提供的assetbundle打包插件
using UnityEditor;//需放在Editor文件夹目录下
using System.IO;
public class CreateAssetBundles
{
[MenuItem("Assets/Build AssetBundles")]
static void BuildAllAssetBundles()
{
string assetBundleDirectory = "Assets/AssetBundles";
if(!Directory.Exists(assetBundleDirectory))
{
//创建assetBundleDirectory路径
Directory.CreateDirectory(assetBundleDirectory);
}
//构建assetbundle
//BuildAssetBundleOptions.None是压缩模式
BuildPipeline.BuildAssetBundles(assetBundleDirectory, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows);
}
}
注:BuildAssetBundleOptions有很多压缩模式,
BuildAssetBundleOptions.None:默认压缩
BuildAssetBundleOptions.UncompressedAssetBundle: 不压缩,包大,加载快
BuildAssetBundleOptions.ChunkBasedCompression:使用L4Z压缩,可加载指定资源,加载速度较快、压缩率也较好:
二.打包assetbundle
1.先设置包名
2.再生成包
Asset->AssetBundles
其中assetbundles是总包,负责总体联系
share、test是我们单独打出来的包
三、assetbundle的加载
1.本地
//加载assetbundle
//获取包中的物体-Wall是我打包在里面的物体名字
//然后挂在某个物体上就能生成了
主要:AssetBundle.LoadFromFile()
2.服务器
using UnityEngine;
using System.Collections;
public class LoadFromCacheOrDownloadExample : MonoBehaviour
{
IEnumerator Start ()
{
while (!Caching.ready)
yield return null;
var www = WWW.LoadFromCacheOrDownload("http://myserver.com/myassetBundle", 5);
yield return www;
if(!string.IsNullOrEmpty(www.error))
{
Debug.Log(www.error);
yield return;
}
var myLoadedAssetBundle = www.assetBundle;
var asset = myLoadedAssetBundle.mainAsset;
}
}