Unity3D - 通过Application.LoadLevel重新加载场景后出现的问题

时间:2013-03-16 20:52:25

标签: unity3d reload destroy scene

我有问题......

我的游戏中有四个场景:开场景,选择玩家的场景,实际的游戏场景以及场景中的游戏。

当我加载实际播放场景时,我遇到了问题

Application.LoadLevel("Let's play the game!") 

这就是我离开这个场景的方式:

if(GUI.Button (new Rect (x, y, w, h), "Quit", buttonStyle))
{
   Application.Quit();
   Application.LoadLevel("Opening Screen");
}

当我第二次加载我想要的等级时,相机应该跟随第一个玩家。这不会发生。我提供了一个选项" restart",这将解决该问题,但我不希望这个事件首先发生。

更严重的是关注动态加载的GameObjects。我正在接收"游戏对象'已被破坏,但你仍然试图访问它。"我不知道这是从哪里来的,因为我不知道我之前在哪里打过电话" Destroy"任何地方。此外,当我在Unity中运行应用程序时,动态创建的对象确实出现在层次结构中。

我认为问题的根源在于失败的相机,但我不确定如何修复它。

有人有任何建议吗?

1 个答案:

答案 0 :(得分:3)

听起来你需要确保调用DontDestroyOnLoad以在水平加载之间将对象保存在内存中:

DontDestroyOnLoad(gameObjectToPreserve);

此外,您的示例中的以下代码将在您加载“打开屏幕”之前退出您的应用程序:

if(GUI.Button (new Rect (x, y, w, h), "Quit", buttonStyle))
{
   Application.Quit();
   Application.LoadLevel("Opening Screen");
}

如果您打算返回到初始屏幕,请删除“Application.Quit()”行。您不会在编辑器的预览模式下看到此问题,因为Application.Quit()在那里没有做任何事情。