我创建了简单的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检查了这个场景
我在哪里犯了错误?
非常感谢。
答案 0 :(得分:1)
不幸的是,由于安全原因,Unity3D会阻止资产包中的脚本,所以我的方案无法按照定义工作
答案 1 :(得分:0)
您可以在资产包中包含脚本,但它们也必须位于加载资产包的项目中,资产包中的脚本和加载项目需要共享元文件。
如果您从加载它的同一项目构建资产包,则应自动执行此操作。如果您使用单独的项目来构建资产包,则应使用版本控制来确保这些脚本保持同步。