介紹
AssetBundles允許按流的方式從本地或遠(yuǎn)程加載資源盗棵。使用AssetBundles沙廉,資源可以存儲(chǔ)在遠(yuǎn)程服務(wù)器憨颠,必要的時(shí)候可以訪問氮趋,這增加了項(xiàng)目的靈活性和減少初始包體的大小辜御。
這篇教程將會(huì)介紹AssetBundles和討論它們是如何工作的以及工作流的步驟和如何去指定資源要打成AssetBundle,什么時(shí)候如何使用AssetBundle變體鸭你,如何打包和測(cè)試AssetBundles和變體。所有的這些內(nèi)容都是使用AssetBundle管理器去簡(jiǎn)化創(chuàng)建擒权、測(cè)試和部署AssetBundles袱巨。本文的最后章節(jié)將會(huì)涉及加載和使用AssetBundles的特例和AssetBundle變體的簡(jiǎn)單使用和示例代碼。
示例項(xiàng)目
在開始閱讀文章之前碳抄,最后去下載這個(gè)AssetBundle管理器項(xiàng)目愉老。
什么是AssetBundle?
AssetBundles是Unity編輯器在編輯時(shí)創(chuàng)建的文件,這個(gè)文件可以被打包項(xiàng)目運(yùn)行時(shí)使用剖效。AssetBundles可以包含資源嫉入,比如模型、材質(zhì)璧尸、圖片和場(chǎng)景咒林。AssetBundle不能包含腳本。
具體來說爷光,AssetBundle是項(xiàng)目的資源或場(chǎng)景的集合保存成壓縮文件的格式垫竞,目的是可以被打包后的程序分開加載。AssetBundle可以被Unity構(gòu)建的游戲或項(xiàng)目加載瞎颗。這些內(nèi)容允許流和異步加載件甥,比如模型、圖片哼拔、音頻甚至整個(gè)場(chǎng)景引有。在首次運(yùn)行應(yīng)用的時(shí)候,可以將AssetBundle進(jìn)行預(yù)緩存倦逐,本地保存以保證更快的加載速度譬正。AssetBundle最主要的目的是從遠(yuǎn)程位置按流的方式加載宫补。AssetBundle可以包含任何Unity支持的資源類型,包括自定義的二進(jìn)制數(shù)據(jù)曾我。唯一的一個(gè)特例是腳本資源粉怕。
AssetBundles有許多的用例。新的內(nèi)容可以通過應(yīng)用動(dòng)態(tài)的加載和卸載資源抒巢。發(fā)布可下載內(nèi)容是很容易實(shí)現(xiàn)的贫贝。這種方式可以減少包體的大小,首次安裝后蛉谜,需要用到資源的時(shí)候才會(huì)去下載資源稚晚。可以下載平臺(tái)和設(shè)備的專用資源型诚,而不需要下載和存儲(chǔ)其他平臺(tái)的冗余資源客燕。通過下載和安裝基于用戶位置和語(yǔ)言和偏好所需的資源,這會(huì)使本地化變得非常容易狰贯。使用新的內(nèi)容可以讓應(yīng)用程序修復(fù)也搓、改變和熱更,而不需要重新提交審核涵紊。
任何項(xiàng)目的資源組織成AssetBundles嚴(yán)重依賴于那個(gè)項(xiàng)目的需要傍妒。這里有幾條基本的方法去了解AssetBundles。
- AssetBundles可以被整個(gè)下載和緩存
- AssetBundles不需要整個(gè)加載
- AssetBundles中的資源可以依賴其他資源
- AssetBundles中的資源可以和其他資源共享依賴
- 每個(gè)AssetBundles都有一些技術(shù)上的消耗栖袋,無論是文件大小還是需要管理的文件
- 不同的平臺(tái)打不同的AssetBundles
AssetBundles是整個(gè)下載的拍顷。如果一個(gè)AssetBundle包含了不是立即使用的資源,即使它們不一定加載進(jìn)場(chǎng)景塘幅,它們也會(huì)占用下載帶寬和磁盤空間昔案。