1

我创建了简单的 Unity 应用程序,允许加载从 Internet 下载的不同场景。如果场景不包含任何脚本,它会很好用。如果有与 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 检查了这个场景

我在哪里做错了?

非常感谢。

4

2 回答 2

1

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

于 2012-04-28T20:39:06.270 回答
0

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

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

于 2015-08-21T21:38:52.547 回答