1. 程式人生 > >資源載入+AB包框架

資源載入+AB包框架

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"); } }

在這裡插入圖片描述