unity5.4.3p2里面的AssetBundle打包流程

unity5.4.3p2里面的AssetBundle打包流程,相比之前unity4.x的打包簡單了許多,Unity4.X中打包的時候需要自己去管理依賴關系,各種BuildPipeline.PushAssetDependencies()和BuildPipeline.PopAssetDependencies(),一不小心手一抖,依賴關系就慘不忍睹。下面簡單說說一下unity5.4的步驟。

1.在工程里新建兩個prefab,分別為ui1.prefab和ui2.prefab,如下圖:

???

?? 然后選中ui1,在右下角的AssetBundle Setting中,設置ui1的AssetBundleName為ui1,一樣的步驟將ui2的AssetBundleName設置為ui2。注意:當把AssetBundleName設置為同一個的時候,將會打進同一個包,這里分開打包

??? 2.在ui1中引用ui2,具體引用操作很簡單,在ui1上掛個腳本,腳本里弄個publish GameObject prefab就好,如下圖:


??? 然后將AssetBundle目錄下的資源進行打包,打包過程其實很簡單(BuildAssetBundleOptions選擇不同的壓縮格式,壓縮比不一樣,在Profiler中SerializedFile大小也不一樣,加載后加壓的速度也不一樣,可酌情考慮使用),過程如下:

[csharp]?view plaincopy
  1. using?UnityEngine;??
  2. using?System.Collections;??
  3. using?UnityEditor;??
  4. public?class?CreateAssetBundles?:?Editor??
  5. {??
  6. ????[MenuItem("Tools/Build?AssetBundles")]??
  7. ????static?void?BuildAllAssetBundles()??
  8. ????{??
  9. ????????BuildPipeline.BuildAssetBundles(Application.dataPath?+?"/AssetBundles",?BuildAssetBundleOptions.UncompressedAssetBundle,BuildTarget.Android);??
  10. ????????AssetDatabase.SaveAssets();??
  11. ????????AssetDatabase.Refresh();??
  12. ????????Debug.LogWarning("打包成功");??
  13. ????}??
  14. }??
打包后的結果如下:


打包的時候,在輸出的bundle所在的文件夾內還會生成一個總的manifest文件,叫做[文件夾名].manifest,我們看看都生成了什么文件,


前面三個文件和后面三個文件是新生成的,其實我們用到的也就是這幾個文件。在AssetBundles.manifest中我們看到


這里記錄了我們打包的所有的assetBundle的信息,其中info_0中記錄了ui1中引用了ui2。再看看ui1.manifest文件,


這里也記錄了ui1引用了哪些assetBundle。

3.加載assetBundle

?? 前面提到ui1中引用到了ui2的資源,所以這里分兩種方式加載,一種是先加載ui1再加載ui2,另一種是先加載ui2再加載ui1,看看這兩種方式有什么區別。

?(1)先加載ui1后加載ui2

[csharp]?view plaincopy
  1. void?Load()??
  2. ???{??
  3. ???????//加載assetBundleManifest文件????
  4. ???????AssetBundle?assetBundleManifest?=?AssetBundle.LoadFromFile(Application.dataPath?+?"/AssetBundles/AssetBundles");??
  5. ???????if?(assetBundleManifest?!=?null)????
  6. ???????{??
  7. ???????????AssetBundleManifest?manifest?=?(AssetBundleManifest)assetBundleManifest.LoadAsset("AssetBundleManifest");??
  8. ??
  9. ???????????//先加載ui1??
  10. ???????????AssetBundle?bundle?=?AssetBundle.LoadFromFile(Application.dataPath?+?"/AssetBundles/ui1");??
  11. ???????????GameObject?obj?=?bundle.LoadAsset("ui1")?as?GameObject;??
  12. ???????????if?(obj?!=?null)??
  13. ???????????{??
  14. ???????????????Instantiate(obj);??
  15. ???????????}??
  16. ???????????//后加載ui1的依賴文件??
  17. ???????????string[]?depends?=?manifest.GetAllDependencies("ui1");??
  18. ???????????AssetBundle[]?dependsAssetbundle?=?new?AssetBundle[depends.Length];??
  19. ???????????for?(int?index?=?0;?index?<?depends.Length;?index++)??
  20. ???????????{??
  21. ???????????????dependsAssetbundle[index]?=?AssetBundle.LoadFromFile(Application.dataPath?+?"/AssetBundles/"?+?depends[index]);??
  22. ???????????}??
  23. ???????}????
  24. ???}????
結果如下圖:


所以這里先加載ui1后加載ui1的依賴文件ui2,Relation中的prefab居然沒有missing驚恐。我可記得在4.X的版本中必須先要加載依賴文件才行的啊驚恐

(2)在加載依賴文件ui2再加載ui1,

[csharp]?view plaincopy
  1. void?Load()??
  2. ???{??
  3. ???????//加載assetBundleManifest文件????
  4. ???????AssetBundle?assetBundleManifest?=?AssetBundle.LoadFromFile(Application.dataPath?+?"/AssetBundles/AssetBundles");??
  5. ???????if?(assetBundleManifest?!=?null)????
  6. ???????{??
  7. ???????????AssetBundleManifest?manifest?=?(AssetBundleManifest)assetBundleManifest.LoadAsset("AssetBundleManifest");??
  8. ???????????//加載ui1的依賴文件??
  9. ???????????string[]?depends?=?manifest.GetAllDependencies("ui1");??
  10. ???????????AssetBundle[]?dependsAssetbundle?=?new?AssetBundle[depends.Length];??
  11. ???????????for?(int?index?=?0;?index?<?depends.Length;?index++)??
  12. ???????????{??
  13. ???????????????dependsAssetbundle[index]?=?AssetBundle.LoadFromFile(Application.dataPath?+?"/AssetBundles/"?+?depends[index]);??
  14. ???????????}??
  15. ???????????//加載ui1??
  16. ???????????AssetBundle?bundle?=?AssetBundle.LoadFromFile(Application.dataPath?+?"/AssetBundles/ui1");??
  17. ???????????GameObject?obj?=?bundle.LoadAsset("ui1")?as?GameObject;??
  18. ???????????if?(obj?!=?null)??
  19. ???????????{??
  20. ???????????????Instantiate(obj);??
  21. ???????????}??
  22. ?????????????
  23. ???????}????
  24. ???}????????????????????????????????????????????


這種情況ui2出來可以正常理解了。

(3)只加載ui1,不加載依賴文件ui2

[csharp]?view plaincopy
  1. void?Load()??
  2. ????{??
  3. ????????//加載assetBundleManifest文件????
  4. ????????AssetBundle?assetBundleManifest?=?AssetBundle.LoadFromFile(Application.dataPath?+?"/AssetBundles/AssetBundles");??
  5. ????????if?(assetBundleManifest?!=?null)????
  6. ????????{??
  7. ????????????AssetBundleManifest?manifest?=?(AssetBundleManifest)assetBundleManifest.LoadAsset("AssetBundleManifest");??
  8. ????????????//加載ui1的依賴文件??
  9. ????????????//string[]?depends?=?manifest.GetAllDependencies("ui1");??
  10. ????????????//AssetBundle[]?dependsAssetbundle?=?new?AssetBundle[depends.Length];??
  11. ????????????//for?(int?index?=?0;?index?<?depends.Length;?index++)??
  12. ????????????//{??
  13. ????????????//????dependsAssetbundle[index]?=?AssetBundle.LoadFromFile(Application.dataPath?+?"/AssetBundles/"?+?depends[index]);??
  14. ????????????//}??
  15. ????????????//加載ui1??
  16. ????????????AssetBundle?bundle?=?AssetBundle.LoadFromFile(Application.dataPath?+?"/AssetBundles/ui1");??
  17. ????????????GameObject?obj?=?bundle.LoadAsset("ui1")?as?GameObject;??
  18. ????????????if?(obj?!=?null)??
  19. ????????????{??
  20. ????????????????Instantiate(obj);??
  21. ????????????}??
  22. ??????????????
  23. ????????}????
  24. ????}????




這種情況必須missing啊。

so,問題出來了,本測試中使用的是unity5.4.3p2,為何步驟(1)中ui1依賴的文件ui2后加載也能出來?尷尬,暫時不知為何,看官如果知道可否指點一二害羞

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/387512.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/387512.shtml
英文地址,請注明出處:http://en.pswp.cn/news/387512.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

靜態查找表的實現

#ifndef SSTABLE_H #define SSTABLE_H#include <iostream> using namespace std;/************************************************************* SSTable&#xff1a;stastic search table 靜態查找表的模板類實現 順序存儲結構 ************************************…

(轉)javascript匿名函數

文章來源: http://hi.baidu.com/koen_li/blog/item/4b14e4fc0c9b140c08244d8c.html 匿名函數的寫法 顧名思義&#xff0c;就是沒有名字的函數&#xff08;⊙﹏⊙b汗&#xff09;。匿名函數通常用于javascript作用域的控制&#xff0c;可以有效的避免對全局變量的污染。常見的匿…

BZOJ3307 雨天的尾巴

題目鏈接&#xff1a;戳我 樹上鏈修改->差分 每一個節點都開一個權值線段樹&#xff0c;最后從下往上合并qwq 代碼如下&#xff1a; #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #include<cmath> #define MA…

主成分分析(PCA)原理詳解 2016/12/17 · IT技術 · 主成分分析, 數學 分享到: 21 原文出處: 中科春哥 一、PCA簡介 1. 相關背景 主成分分析(Principa

主成分分析&#xff08;PCA&#xff09;原理詳解 2016/12/17 IT技術 主成分分析, 數學 分享到&#xff1a;21原文出處&#xff1a; 中科春哥 一、PCA簡介 1. 相關背景 主成分分析&#xff08;Principal Component Analysis&#xff0c;PCA&#xff09;&#xff0c; 是一種統…

1 Hadoop簡介

1.1 什么是Hadoop 分布式計算平臺 優點&#xff1a; 高可靠性 高擴展性 高效性 在各節點之間動態地移動數據&#xff0c;保證各個節點的動態平衡 高容錯性 數據多副本&#xff1b;重新啟動失敗任務 Hadoop應用&#xff1a; Yahoo 廣告系統Web搜索研究 Facebook 數據分…

Google Xpath Helper

Google Xpath Helper 下載方法&#xff1a; 1. 訪問http://chrome-extension-downloader.com/ 2. 把https://chrome.google.com/webstore/detail/xpath-helper/hgimnogjllphhhkhlmebbmlgjoejdpjl拷貝到文本框里面&#xff0c;然后點擊“Download Extention”按鈕。 使用方法&am…

【Tensorflow】 Object_detection之訓練PASCAL VOC數據集

參考&#xff1a;Running Locally 1、檢查數據、config文件是否配置好 可參考之前博客&#xff1a; Tensorflow Object_detection之配置Training Pipeline Tensorflow Object_detection之準備數據生成TFRecord 2、訓練模型 PIPELINE_CONFIG_PATH/data/zxx/models/research/date…

2 Hadoop的安裝與配置

需要JDK、SSH 對于偽分布式&#xff0c;Hadoop會采取與集群相同的處理方式&#xff1a;按次序啟動文件conf/slaves中記載的主機上的進程&#xff0c;只不過在偽分布式中Slave為localhost&#xff08;自身&#xff09;。 Hadoop從三個角度將主機劃分為兩種角色&#xff1a; 最…

局域網訪問控制

訪問局域網內其他機器可用如下方式&#xff1a; \\PC-name\d$\dir 或者 \\192.168.xxx.xxx\d$\dir d代表d盤 但前提是對方機器已經把本機用戶設置為管理員賬戶轉載于:https://www.cnblogs.com/jimmy-c/p/4116804.html

Unity3d 插值同步

文中大體的思路&#xff1a; A玩家 移動時&#xff0c;本機自行移動&#xff0c;并發送移動指令給服務端&#xff0c;假設移動是成功的&#xff0c;服務端同步其他客戶端 B玩家&#xff0c;B玩家 中用一個隊列 Queue 來裝服務端來的移動指令&#xff0c;然后客戶端在updata中做…

laravel數據庫相關操作說明

輸出原生sql: DB::table(users)->where([[name,,張三]])->toSql(); //輸出sql為&#xff1a;select * from users where name?; DB::table(users)->where([[name,,張三]])->getQuery(); //輸出sql為&#xff1a;select * from users where name張三; 運行原生sql查…

1 數據挖掘基礎

1.1 什么是數據挖掘 從大量數據中挖掘出隱含的、未知的、對決策有潛在價值的關系、模式和趨勢&#xff0c;并用這些知識和規則建立用于決策支持的模型&#xff0c;提供預測性決策支持的方法、工具和過程&#xff0c;這就是數據挖掘。 是統計學、數據庫技術、人工智能技術的結…

R文件報錯的原因

一般R文件報錯&#xff0c;無非是資源文件錯誤&#xff0c;圖片命名錯誤&#xff0c;但是編譯都會報錯&#xff0c;可以很快解決。但是前幾天&#xff0c;引入一個第三方aar包后&#xff0c;項目編譯正確&#xff0c;但是就是R文件報錯&#xff0c;找不到R文件&#xff0c;整個…

1.0 算法本機調試方法

算法的本機調試方法&#xff1a; 從本地文件中讀取測試數據&#xff0c;進行算法調試。 例&#xff1a;讀取兩個數&#xff0c;輸出和。 1 2 11 22 111 222 輸出&#xff1a; 3 33 333 #include <fstream> //讀取本地文件需要此頭文件。調試完成后&#xff0c;提…

[轉]Excel數據轉化為sql腳本

在實際項目開發中&#xff0c;有時會遇到客戶讓我們把大量Excel數據導入數據庫的情況。這時我們就可以通過將Excel數據轉化為sql腳本來批量導入數據庫。 1 在數據前插入一列單元格&#xff0c;用來拼寫sql語句。 具體寫法&#xff1a;"insert into t_student (id,name,age…

void Update ( ) 更新 void FixedUpdate ( )

void Update ( ) 更新 void FixedUpdate ( ) 固定更新 相同點&#xff1a;當MonoBehaviour啟用時&#xff0c;其在每一幀被調用&#xff0c;都是用來更新的。 異同點&#xff1a;第一點不同&#xff1a; Update()每一幀的時間不固定&#xff0c;即第一幀與第二幀的時間間隔t…

海量數據庫的查詢優化及分頁算法方案(一)

隨著“金盾工程”建設的逐步深入和公安信息化的高速發展&#xff0c;公安計算機應用系統被廣泛應用在各警種、各部門。與此同時&#xff0c;應用系統體系的核心、系統數據的存放地――數據庫也隨著實際應用而急劇膨脹&#xff0c;一些大規模的系統&#xff0c;如人口系統的數據…

【點分治】luoguP2664 樹上游戲

應該是一道中等難度的點分&#xff1f;麻煩在一些細節。 題目描述 lrb有一棵樹&#xff0c;樹的每個節點有個顏色。給一個長度為n的顏色序列&#xff0c;定義s(i,j) 為i 到j 的顏色數量。以及 現在他想讓你求出所有的sum[i] 輸入輸出格式 輸入格式&#xff1a; 第一行為一個整數…

EasyJoyStick使用以及兩種操作桿 EasyJoyStick的使用方法,簡單的不能再簡單 Hedgehog Team-》Easy Touch -》Add Easy Touch For C#

EasyJoyStick使用以及兩種操作桿EasyJoyStick的使用方法&#xff0c;簡單的不能再簡單Hedgehog Team-》Easy Touch -》Add Easy Touch For C#Hedgehog Team-》Easy Touch -》Extensions-》Adding A New Joystick配置如圖&#xff1a;然后看一下配置&#xff0c;我喜歡掌控性強一…

2.1 vector

表結構的數組實現隨機訪問快速尾插動態調整所占內存空間#include<vector>從0開始計數創建vector對象的三種方法&#xff1a; 1. vector<int> v;2. vector<int> v(10); //默認值為03. vecotr<double> v(10,8.6); //為每個元素指定初始值尾插&#xff1a…