資源載入+AB包框架
阿新 • • 發佈:2018-12-20
1. 為啥要有AB包?
因為資源需要更新,避免更新一次打包一次,動態修改
2. AB包注意啥?
依賴關係 找依賴關係應該找到對應的平臺!!!
3. 打包策略是分場景打包 若檔案被資料夾包含打包出來的就是資料夾的名字 否則是場景資料夾名稱
4. 當我AB包從硬碟載入完成之後 是不是就該載入到記憶體 並例項化了? 帶有快取的ab載入機制
5. 在場景中新建物體掛載指令碼
5.1: 指定場景
5.2: 指定abname
5.3: 指定objinabname
5.4: 協同
5.5: 委託 void string
5.6: 在委託裡面進行物體的例項化操作
using System. Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using LLWHABFW;
public class S03Test : MonoBehaviour {
//場景名稱
//Windows下面的資料夾名字 場景名稱
private string _ABScene = "scenes03";
//AB包名稱
//前面這個03是streamingAssets/windows 下面的資料夾名稱
//後面這個03.ab是 scenes03檔案裡的prefabs.ab檔案
private string _ABName = "scenes03/prefabs.ab";
//資源名稱
//想要例項化出來的物體
private string _objAB01 = "Plane";
private string _objAB02 = "Sphere";
//因為採用的人家資源 所以部分依賴關係沒有處理好 用List<>來接受
private List<GameObject> list;
void Start () {
list = new List<GameObject>(); //建立了一個list的物件
//呼叫AB包(連鎖智慧呼叫AB包【集合】)
//協同載入 等載入完成後自動呼叫 返回值為void 引數為string的回撥方法!!
StartCoroutine(AssetBundleMgr.GetInstance().LoadAssetBundlePack(_ABScene, _ABName, Loading));
}
private void Loading(string name)
{
GameObject Plane, Sphere; //定義兩個GameObject型別的物體
//(場景名稱,AB檔名稱,需要例項化的物體,不快取) 並轉換成GameObject型別
Plane = AssetBundleMgr.GetInstance().LoadAsset(_ABScene, _ABName, _objAB01, false) as GameObject;
Sphere = AssetBundleMgr.GetInstance().LoadAsset(_ABScene, _ABName, _objAB02, false) as GameObject;
list.Add(Instantiate(Plane));
list.Add(Instantiate(Sphere));
}
// Update is called once per frame
void Update () {
if (Input.GetKeyDown(KeyCode.Space))
{
for (int i = 0; i < list.Count; i++)
{
Destroy(list[i]); //銷燬物體
}
list.Clear();
AssetBundleMgr.GetInstance().DisposeAllAssets(_ABScene); //銷燬資源
SceneManager.LoadScene("1");
}
}