2015-03-08 24 views
6

Quindi ho letto le modifiche di Unity5 AssetBundle e le ho capite perfettamente. Il mio problema è che molte funzionalità sono state rese "obsolete", ma le funzioni sembrano funzionare ancora e la documentazione di Unity5 utilizza effettivamente funzioni obsolete.Unity5 Le funzioni AssetBundle sono obsolete?

La mia preoccupazione principale è, come potrei ora, in Unity5, prendere un elenco di prefabbricati e trasformarli tutti in gruppi di risorse separati separatamente? Non solo un AssetBundle contenente tutto, ma piuttosto ciascuno incorporato nel proprio AssetBundle separato?

Idealmente, vorrei utilizzare la funzione BuildPipeline.BuildAssetBundle. Ma l'unità5 dice che è obsoleto. Ma se si guarda qui: http://docs.unity3d.com/500/Documentation/Manual/managingassetdependencies.html

Stanno usando quella funzione nel manuale.

Inoltre, dice che l'opzione CollectDependencies è obsoleta e non è più necessaria. Ma ho rimosso dal mio codice e poi l'Unità sputare fuori l'errore:

Please specify BuildAssetBundleOptions.CollectDependencies or collect GameObject's components and pass as 'assets' parameter. 

risposta

5

La nuova BuildPipeline.BuildAssetBundles prende un array di AssetBundleBuild come input. È possibile creare un AssetBundleBuild[] e riempirlo con tutti i prefabbricati che si desidera, come pacchetti separati:

//Create an array for 2 different prefabs. 
AssetBundleBuild[] buildMap = new AssetBundleBuild[2]; 

//Make a buildMap for the first prefab. 
AssetBundleBuild buildInfo1 = new AssetBundleBuild(); 
//The name of the bundle that the prefab will be saved as. 
buildInfo1.assetBundleName = bundle1Name+".unity3d"; 

//Only one file for this prefab. 
string[] prefabs1 = new string[1]; 
//The full path to the prefab. 
prefabs[0] = prefab1Path; 
buildInfo1.assetNames = prefabs1; 

buildMap[0] = buildInfo1; 


AssetBundleBuild buildInfo2 = new AssetBundleBuild(); 
//The name of the bundle that the prefab will be saved as. 
buildInfo2.assetBundleName = bundle2Name+".unity3d"; 

//Only one file for this prefab. 
string[] prefabs2 = new string[1]; 
//The full path to the prefab. 
prefabs[0] = prefab2Path; 
buildInfo2.assetNames = prefabs2; 

buildMap[0] = buildInfo2 

//Save the prefabs as bundles to the "bundleFolder" path. 
BuildPipeline.BuildAssetBundles(bundleFolder, buildMap) 
Problemi correlati