2012-04-27 75 views
1

我创建了简单的Unity应用程序,允许加载从互联网下载的不同场景。 如果场景不包含任何脚本,它会很好用。如果有一个与游戏物体连接的脚本,它失败,出现错误:通过Application.LoadLevel加载的场景中的脚本不起作用

The class defined in script file named 'XXX' does not match the file name! 

如果场景开始作为独立的应用程序脚本工作没有任何问题,但如果那一幕通过BuildPipeline.BuildStreamedSceneAssetBundle保存我得说明错误。

我通过简单的代码加载场景:

WWW www = new WWW("file://" + file); 
    yield return www; 

    loadedBundle = www.assetBundle; 
    Application.LoadLevel(name); 

主要脚本停留在现场,因为我叫DontDestroyOnLoad它。

我通过Unity3D 3.5.0检查这种情况下和3.5.1

我哪里错了吗?

非常感谢。

回答

1

不幸的是,Unity3D脚本块资产包由于安全方面的原因,所以我的场景不会被定义

+0

确定吗? [documentation](http://docs.unity3d.com/Documentation/Manual/scriptsinassetbundles.html)表示,除了iOS(由于Apple限制),可以在捆绑包中包含脚本。 – 2014-01-14 16:44:32

+1

我确定。您可以包含脚本,但只能作为字节码。检查我的另一个问题:http://stackoverflow.com/questions/10808033/how-to-compile-unity3d-script-to-include-it-to-assetbundle – 2014-01-14 20:15:52

0

工作,您可以在该资产包的脚本,但他们也必须在该项目中加载资产捆绑和资产捆绑和加载项目中的脚本需要共享元文件。

如果您从加载它的相同项目构建资产捆绑包,则应该自动发生。如果您使用单独的项目构建资产包,则应使用修订控制来确保这些脚本保持同步。