Q1:如果我有一個Prefab,它的Dependencies都在Resources文件夾中,那么,當(dāng)我在AssetBundle打包時,只打包這個Prefab(不指定BuildAssetBundleOptions.CompleteAssets和BuildAssetBundleOptionsCollectDependencies)的話,這個Prefab能夠正確實(shí)例化嗎?
這是不能正確實(shí)例化的,因?yàn)锳ssetBundle中的資源和Resource文件夾下資源是不會建立依賴關(guān)系的(腳本除外,因?yàn)殚_啟BuildAssetBundleOptionsCollectDependencies 時,腳本依然不會打包到AssetBundle中)。所以會出現(xiàn)Mesh、Material等的丟失。
Q2:假設(shè)有兩個界面Panel A和Panel B,它們均依賴一個共享Atlas C。AssetBundle打包時,如果我們將其分別打包的話,那么在使用時是否不能將AssetBundle C進(jìn)行卸載?如果在加載Panel A和B之前,將Atlas C加載到內(nèi)存中,但是將AssetBundle C進(jìn)行卸載,那么在加載和實(shí)例化Panel A和B時,是否會出問題?
是的,不僅是Panel和Atlas,只要是A或B依賴于C,就必須保證在加載或?qū)嵗疉或B時,C的AssetBundle一定存在于內(nèi)存中。如果之前將C對應(yīng)的AssetBundle進(jìn)行卸載,則加載或?qū)嵗疉和B時,引擎將無法自動將C綁定給A和B進(jìn)行使用。
關(guān)于AssetBundle依賴性打包,我們已在之前的分享揭開AssetBundle廬山真面目中有所提及。