【发布时间】:2015-05-20 20:55:01
【问题描述】:
我一直在用 Unity3D 开发一款棋盘式游戏。主要场景是棋盘,其中存储了有关每个玩家和当前(随机生成的)棋盘的数据。
我打算在游戏中添加小游戏,例如在棋盘上的特定空间着陆时。当然,我想在一个单独的场景中编写迷你游戏。有没有办法在不丢失当前场景实例的情况下做到这一点,从而保持当前场景的状态?
提前致谢:)
【问题讨论】:
标签: unity3d scene simultaneous
我一直在用 Unity3D 开发一款棋盘式游戏。主要场景是棋盘,其中存储了有关每个玩家和当前(随机生成的)棋盘的数据。
我打算在游戏中添加小游戏,例如在棋盘上的特定空间着陆时。当然,我想在一个单独的场景中编写迷你游戏。有没有办法在不丢失当前场景实例的情况下做到这一点,从而保持当前场景的状态?
提前致谢:)
【问题讨论】:
标签: unity3d scene simultaneous
简短回答:不,但可能有另一种方式来做你想做的事。
对Application.LoadLevel 的基本调用将在加载下一个场景之前破坏当前场景。这不是你想要的。
如果您的小游戏相对简单,您可以使用Instantiate 引入预制件并将其生成在远离场景其余部分的地方。您甚至可以使用脚本切换到另一个摄像机、切换播放器控件和场景中的其他交互,等等。小游戏完成后,您可以销毁或禁用您带入的任何内容,并重新启用主场景中需要打开的任何内容。
您可以创建一个单独的场景并调用Application.LoadLevelAdditive 来加载该场景而不破坏当前场景。如上所述,然后您可以使用脚本来管理哪些摄像机和场景行为处于活动状态。
如果你小心点,你真的不需要两个单独的场景。 “伪造”一个场景切换可能就足够了。
【讨论】:
Application.LoadLevelAdditive 已过时,请改用SceneManager.LoadScene("SceneName",LoadSceneMode.Additive);。
没有代码很难给出完整的答案,但您应该使用统一文档或 youtube 查看以下内容:
【讨论】: