打包API
BuildPipeline.BuildAssetBundle
對除Scene以外的資源打包企软,支持單個和多個BuildPipeline.BuildStreamedSceneAssetBundle
對Scene文件打包,也支持單個和多個
打包參數(shù)
CompleteAssets
用于保證資源的完備性饭望。比如仗哨,當你僅打包一個Mesh資源并開啟了該選項時,引擎會將Mesh資源和相關GameObject一起打入AssetBundle文件中铅辞;CollectDependencies
用于收集資源的依賴項厌漂。比如,當你打包一個Prefab并開啟了該選項時巷挥,引擎會將該Prefab用到的所有資源和Component全部打入AssetBundle文件中桩卵;DeterministicAssetBundle
用于為資源維護固定ID,以便進行資源的熱更新倍宾。
Unity4.x 依賴打包
- Unity4.x使用棧來構(gòu)建AB包之間的依賴關系,簡單的說就是被依賴的資源先打包入棧胜嗓,然后再目標資源高职,然后再出棧。
var options = BuildAssetBundleOptions.CollectDependencies
| BuildAssetBundleOptions.CompleteAssets;
// 入棧-共享資源
BuildPipeline.PushAssetDependencies();
// 先打被依賴資源
BuildPipeline.BuildAssetBundle(
AssetDataBase.LoadMainAssetAtPath("Assets/shared.png"),
null, "shared.unity3d", options);
// 入棧-目標資源A
BuildPipeline.PushAssetDependencies();
BuildPipeline.BuildAssetBundle(
AssetDataBase.LoadMainAssetAtPath("Assets/A.fbx"),
null, "A.unity3d", options);
// 出棧-目標資源A
BuildPipeline.PopAssetDependencies();
// 入棧-目標資源
BuildPipeline.PushAssetDependencies();
BuildPipeline.BuildAssetBundle(
AssetDataBase.LoadMainAssetAtPath("Assets/B.fbx"),
null, "B.unity3d", options);
// 出棧-目標資源B
BuildPipeline.PopAssetDependencies();
// 出棧-共享資源
BuildPipeline.PopAssetDependencies();
- 獲取依賴
foreach(string item in AssetDatabase.GetDependencies("Assets/Role.prefab")
{
Debug.Log(item);
}
Unity4.x 打包注意
AssetBundle資源間的依賴是通過Build時構(gòu)建的棧來決定的辞州,所以當B依賴A怔锌,而B需要更新的時候,其依賴的A也要重新打一次变过。
B依賴A埃元,而A需要更新時,只需要重新打A即可媚狰。
打包時必須開啟DeterministicAssetBundle