通过Application.LoadLevel加载的场景中的脚本不起作用

时间:2012-04-27 22:46:09

标签: unity3d gameobject

我创建了简单的Unity应用程序,允许加载从互联网下载的不同场景。 如果场景不包含任何脚本,它的效果很好。如果有一个与GameObject连接的脚本,它将失败并显示错误:

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检查了这个场景

我在哪里犯了错误?

非常感谢。

2 个答案:

答案 0 :(得分:1)

不幸的是,由于安全原因,Unity3D会阻止资产包中的脚本,所以我的方案无法按照定义工作

答案 1 :(得分:0)

您可以在资产包中包含脚本,但它们也必须位于加载资产包的项目中,资产包中的脚本和加载项目需要共享元文件。

如果您从加载它的同一项目构建资产包,则应自动执行此操作。如果您使用单独的项目来构建资产包,则应使用版本控制来确保这些脚本保持同步。