Unity进阶----AssetBundle_03(2018/11/07)

1. 为啥有AB包? 因为资源需要更新, 避免更新一次打包一次 动态修改.

2. AB包注意啥? 依赖关系 找依赖关系应该找到对应的平台!!! 

3. 打包策略是分场景打包 若文件被文件夹包含打包出来的就是文件夹的名字 否则是场景文件夹名称

4. 当我AB包从硬盘加载完成之后 是不是就该加载到内存 并实例化了? 带有缓存的ab加载机制

5.脚本不允许出现在打包目录的 dll

6.知道加载的过程 说出来! 这个很重要(依赖加载必须会). 知道框架的基本作用 以后会拿出来用或修改 

7. Lua: Lua语言和其他脚本语言有一致特性 Python C很大的渊源 

8.操作步骤:

a. 指定场景

b. 指定abname

c.指定objinabname

d. 协同

e. 委托 void string

f.在委托里面进行物体的实例化操作

 1 using System.Collections;
 2 using System.Collections.Generic;
 3 using UnityEngine;
 4 using UnityEngine.SceneManagement;
 5 using LLWHABFW;//引用框架
 6 
 7 public class Scene03Boll : MonoBehaviour {
 8 
 9     private string _abScene = "scenes03";
10 //压缩场景的名字---------------------------------->"a"
11     private string _abName = "scenes03/scenes03.ab";
12 //压缩场景中物体的名字----------------->"b"
13     private string _obj01InAB = "Plane.prefab";
14 //在scenes03.ab中预制体Plane的名字---------->"c"
15     private string _obj02InAB = "Sphere.prefab";
16 //在scenes03.ab中预制体Sphere的名字-------->"c"
17     private List<GameObject> _mylist;
18     void Start()
19     {
20         _mylist = new List<GameObject>();        StartCoroutine(AssetBundleMgr.GetInstance().LoadAssetBundlePack(_abScene, _abName, heheda));
21  //解压所需物体及其依赖-------------------------------------->"d"(参数最后一个为"e")
22     }
23     
24     void Update () 
25     {
26         if (Input.GetKeyDown(KeyCode.Space)) 
27         {
28             for  (int i=0;i<_mylist.Count;i++)
29             {
30                 Destroy(_mylist[i]);
31             }
32             _mylist.Clear();
33 
34             AssetBundleMgr.GetInstance().DisposeAllAssets(_abScene);
35             ABManifestLoader.GetInstance().Dispose();
36             
37             StartCoroutine("ssss");
38         }
39     }
40     private void  heheda(string yu)
41 //实例化------------------------------------------------>"f"
42     {
43         GameObject plan, boll;
44         plan = AssetBundleMgr.GetInstance().LoadAsset(_abScene, _abName, _obj01InAB, false) as GameObject;
45         boll = AssetBundleMgr.GetInstance().LoadAsset(_abScene, _abName, _obj02InAB, false) as GameObject;
46        _mylist.Add( Instantiate(plan));
47        _mylist.Add(Instantiate(boll));
48     }
49     IEnumerator ssss() 
50     {
51         yield return new WaitForSeconds(3);     
52         SceneManager.LoadScene("1");
53     }
54 }

 


压缩包对应关系:

 

 

 

更改路径位置:


猜你喜欢

转载自www.cnblogs.com/Future-Better/p/9922920.html
今日推荐