1. 程式人生 > >AssetBundle包框架

AssetBundle包框架

  1. 為啥有AB包? 因為資源需要更新, 避免更新一次打包一次 動態修改.

  2. AB包注意啥? 依賴關係 找依賴關係應該找到對應的平臺!!!

  3. 打包策略是分場景打包 若檔案被資料夾包含打包出來的就是資料夾的名字 否則是場景資料夾名稱

  4. 當我AB包從硬碟載入完成之後 是不是就該載入到記憶體 並例項化了? 帶有快取的ab載入機制

指令碼不允許出現在打包目錄的 dll

第一步
先刪除之前的包
第一步先刪除之前的包
第二步
選擇新增標籤
在這裡插入圖片描述
第三步
將資源打包
在這裡插入圖片描述
如何例項化出來?(首先感謝老師的框架)
5.
5.1: 指定場景
5.2: 指定abname
5.3: 指定objinabname
5.4: xietong
5.5: 委託 void string
5.6: 在委託裡面進行物體的例項化操作

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using LLWHABFW;
using UnityEngine.SceneManagement;

public class Scene3AB : MonoBehaviour {

    // Use this for initialization
    private string _aBScence = "scenes03";   //找到打包AB的場景
    private string _aBName = "scenes03/prefabs.ab"
; //找到打包AB的檔名 private string _objInAB01 = "Plane.prefab"; //AB包的內容檔案 private string _objInAB02 = "RollerBall.prefab"; private List<GameObject> _list; //定義列表儲存GMOBJ void Start() { _list = new List<GameObject>(); // 賦值給常量list StartCoroutine(AssetBundleMgr.
GetInstance().LoadAssetBundlePack(_aBScence, _aBName, XXXX)); //協同引數是(場景,AB包的檔名,協同方法) } // 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(_aBScence); ABManifestLoader.GetInstance().Dispose(); SceneManager.LoadScene("1"); } } private void XXXX(string LLWH) { GameObject Plane, Ball; Plane = AssetBundleMgr.GetInstance().LoadAsset(_aBScence, _aBName, _objInAB01, false) as GameObject; //如果為true的話將會佔用記憶體硬碟CPU造成發熱加大電耗也就是俗稱的優化差 Ball = AssetBundleMgr.GetInstance().LoadAsset(_aBScence, _aBName, _objInAB02, false) as GameObject; _list.Add(Instantiate(Plane)); _list.Add(Instantiate(Ball)); } }

箭頭表示一一對應關係
在這裡插入圖片描述