Unity5使用场景构建资产包

时间:2015-05-19 14:02:05

标签: unity3d

我正在尝试使用场景创建资产包。这就是我在unity4中所做的。

[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中有效,但现在,当我加载Scene时,所有脚本引用都丢失了。对象在场景中但没有脚本。另外,unity告诉我BuildStreamedSceneAssetBundle已经过时了。所以我的问题是,为什么我的脚本引用不在核心场景中?因此,当我加载资产包时,所有脚本都不会丢失。我在加载的场景中使用的NGUI Atlas也不见了。

如果有人有想法会很高兴!

编辑:"级别中的第一个字符串"将有所有脚本引用。怎么可能?

1 个答案:

答案 0 :(得分: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); 
.....

我用了#34; BuildPipeline.BuildAssetBundles" Unity5的功能。
但我认为" BuildPipeline.BuildStreamedSceneAssetBundle"和#34; BuildPipeline.BuildAssetBundles"很相似。