2015-05-19 32 views
0

我想創建與場景的資產包。這是我在unity4Unity5建築資產包與場景

[MenuItem("Bundle/Create ios Scene SceneLoader")] 
static void iosBuild(){ 
    string[] levels = new string []{"Assets/Scenes/01 SceneLoader.unity", "Assets/Scenes/02 Level1.unity","Assets/Scenes/02 Level2.unity" ,"Assets/Scenes/02 Level3.unity"}; 

    BuildPipeline.BuildStreamedSceneAssetBundle(levels, "Assets/Bundles/bundle-ios.unity3d", BuildTarget.iOS); 
} 

做了之後,我通過這段代碼加載我的包:

using(WWW www = WWW.LoadFromCacheOrDownload (url, 0)){ 
     while(!www.isDone){ 
      status.text = "loading \n" + (www.progress * 100).ToString() + "%"; 
      yield return null; 
     } 

     yield return www; 
     //check if server response is an error 
     if (www.error != null){ 
      throw new Exception("WWW download had an error: " + url + " " + www.error); 
     } 

     //Load the asset bundle 
     AssetBundle bundle = www.assetBundle; 

     //obsolete bundle.LoadAll(); 
     bundle.LoadAllAssets(); 
     Application.LoadLevel ("01 SceneLoader"); 
    } 

此代碼工作在unity4,但現在,當我打開我的場景,所有的腳本引用缺失。對象在場景中,但沒有腳本。此外,統一告訴我,BuildStreamedSceneAssetBundle已過時。所以我的問題是,爲什麼我的腳本沒有在覈心場景中引用?所以當我加載一個資產包時,所有的腳本都不會丟失。我在加載的場景中使用的NGUI Atlas也不見了。

如果有人有想法,會很高興!

編輯:「級別」中的第一個字符串將具有所有腳本引用。這怎麼可能?

回答

0

我認爲這個問題是統一性的錯誤。 我的項目有同樣的問題。

我找到了解決方案,但是非常不方便。
如果您必須使用場景資產包,則 會爲每個場景創建一個資產包。

string[] level1 = new string []{"Assets/Scenes/01 SceneLoader.unity"}; 
string[] level2 = new string []{"Assets/Scenes/02 Level1.unity"}; 
..... 

BuildPipeline.BuildStreamedSceneAssetBundle(level1, "Assets/Bundles/bundle-ios1.unity3d", BuildTarget.iOS); 
BuildPipeline.BuildStreamedSceneAssetBundle(level2, "Assets/Bundles/bundle-ios2.unity3d", BuildTarget.iOS); 
..... 

我在Unity5中使用了「BuildPipeline.BuildAssetBundles」func。
但我認爲「BuildPipeline.BuildStreamedSceneAssetBundle」和「BuildPipeline.BuildAssetBundles」類似。

+0

謝謝你,工作! 希望他們能儘快解決這個問題。 – Jenny