(轉)[Unity3D]BuildPipeline.PushAssetDependencies 打包依賴包,優化UI Prefab的資源引用加載(坑爹之處)


轉自:http://blog.csdn.net/chiuan/article/details/39040421#reply

1:長話短說,UI Prefab中一般會交叉引用Atlas,那么打包時候我們可以動態獲取這個prefab的依賴資源,提取Atlas進行獨立打包依賴包。實現實例化這個UI先加載依賴包,可以自己實現引用資源計數器,當清空時候Unload(true)完全釋放引用的資源依賴包。

2:打包依賴資源實現大概設計如下

push

build 依賴資源1

build 依賴資源2

build 依賴資源...

push

build ui prefab 1

pop

push

build ui prefab 2

pop

pop

 

注意:坑的地方

首先第一步當然先打包依賴包,如果如上,依賴包非常多。其實要清楚理解,同一個push&pop包圍中的資源是可以相互依賴的。也就是說第一個build 依賴資源1是個Atlas的prefab,那么下面的資源引用包將不會再獨立引入“UIAtla”這個腳本!

這樣和我們設計想實現“實現實例化這個UI先加載這個ui的依賴包”,會存在可能的bug,就是東西看不到,並且提示你加載的assetbundle script missing。

 

 

其實就是如頂圖,我把左邊的綠色注釋掉,右邊指示是說ui.prefab是引用了atla2里面的貼圖,但是打包依賴包卻第一個先打包了atla1,加載時候不加載atla1。導致atla2中實際上是沒有公用的atla腳本的,會報錯並且看不到UI。

 

解決方案,打包NGUI這類atlas時候可以把它們腳本都提取出來如UIAtlas\UIFont,針對腳本獨立打一個common包,程序默認會加載這個資源依賴包。

 

坑爹實例:http://pan.baidu.com/s/1k3yKe

總結:

依賴打包會關聯代碼,所有必須嚴格保證加載assetbundle時按照依賴打包的順序來進行!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM