打包
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
public class AssetsBundles : MonoBehaviour {
[MenuItem("AssetBundleTools/BuildAB")]
public static void Building()
{
//固定格式
string path = Application.streamingAssetsPath + "/Main";
BuildPipeline.BuildAssetBundles(path, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows64);
}
}
解包与依赖处理
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LoadDepends : MonoBehaviour {
public string AbName;
private string _abPath;
private string _manpath;
private List<AssetBundle> ABList;
// Use this for initialization
void Start () {
ABList = new List<AssetBundle>();
_abPath = Application.streamingAssetsPath + "/Main/";
_manpath = Application.streamingAssetsPath + "/Main/Main";
//固定格式
#region Loading Dependencies
AssetBundle _manAB = AssetBundle.LoadFromFile(_manpath);
AssetBundleManifest manifest = _manAB.LoadAsset<AssetBundleManifest>("AssetBundleManifest");
string[] depends = manifest.GetAllDependencies(AbName);
if (depends.Length !=0)
{
foreach (string s in depends)
{
ABList.Add(LoadABByName(s));
}
}
#endregion
AssetBundle _ab = AssetBundle.LoadFromFile(_abPath + AbName);
GameObject obj = _ab.LoadAsset<GameObject>("Sphere");
Instantiate(obj);
//释放资源
foreach (var item in ABList)
{
item.Unload(false);
}
_ab.Unload(false);
//检验
AssetBundle _ab01 = AssetBundle.LoadFromFile(_abPath + AbName);
GameObject game = _ab01.LoadAsset<GameObject>("Sphere");
Instantiate(game,Vector3.one,Quaternion.identity);
}
// Update is called once per frame
void Update () {
}
private AssetBundle LoadABByName(string abName)
{
return AssetBundle.LoadFromFile(_abPath + abName);
}
}