【问题标题】:Scripts in scenes loaded via Application.LoadLevel don't work通过 Application.LoadLevel 加载的场景中的脚本不起作用
【发布时间】:2012-04-27 22:46:08
【问题描述】:

我创建了简单的 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 检查了这个场景

我哪里做错了?

非常感谢。

【问题讨论】:

    标签: unity3d gameobject


    【解决方案1】:

    不幸的是,由于安全原因,Unity3D 会阻止资产包中的脚本,因此我的方案无法按定义运行

    【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2013-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-16
      • 1970-01-01
      • 2023-02-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多