【问题标题】:Having multiple unity scenes open simultaneously同时打开多个统一场景
【发布时间】:2015-05-20 20:55:01
【问题描述】:

我一直在用 Unity3D 开发一款棋盘式游戏。主要场景是棋盘,其中存储了有关每个玩家和当前(随机生成的)棋盘的数据。

我打算在游戏中添加小游戏,例如在棋盘上的特定空间着陆时。当然,我想在一个单独的场景中编写迷你游戏。有没有办法在不丢失当前场景实例的情况下做到这一点,从而保持当前场景的状态?

提前致谢:)

【问题讨论】:

    标签: unity3d scene simultaneous


    【解决方案1】:

    简短回答:不,但可能有另一种方式来做你想做的事。

    Application.LoadLevel 的基本调用将在加载下一个场景之前破坏当前场景。这不是你想要的。

    如果您的小游戏相对简单,您可以使用Instantiate 引入预制件并将其生成在远离场景其余部分的地方。您甚至可以使用脚本切换到另一个摄像机、切换播放器控件和场景中的其他交互,等等。小游戏完成后,您可以销毁或禁用您带入的任何内容,并重新启用主场景中需要打开的任何内容。

    您可以创建一个单独的场景并调用Application.LoadLevelAdditive 来加载该场景而不破坏当前场景。如上所述,然后您可以使用脚本来管理哪些摄像机和场景行为处于活动状态。

    如果你小心点,你真的不需要两个单独的场景。 “伪造”一个场景切换可能就足够了。

    【讨论】:

    • 谢谢 rutter,我回家后看看,然后告诉你:)
    • 现在Application.LoadLevelAdditive 已过时,请改用SceneManager.LoadScene("SceneName",LoadSceneMode.Additive);
    【解决方案2】:

    没有代码很难给出完整的答案,但您应该使用统一文档或 youtube 查看以下内容:

    • PlayerPrefs,这是一种保存数据的方式,尽管我认为它并不完全安全,即能够从文本文件进行编辑。
    • 可序列化,这显然比 playerprefs 更好。
    • DonDestroyOnLoad,可以将信息传递到多个场景。
    • 静态变量,再次不确定这是否对您的特定问题有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-01
      • 2023-04-11
      • 2020-05-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多