在场景之间移动一些对象的统一模式?

时间:2016-11-30 16:08:52

标签: unity3d

我正在寻找一种在场景之间转换的模式,将一个对象的一个​​实例移动到下一个场景,然后将其返回到前一个场景,但不会破坏前一个场景中的其他对象。以下是上下文:

  • 当我的游戏加载时,它连接到我的服务器以获取玩家可以控制的角色列表,并从预制件动态实例化它们。
  • 加载脚本将每个角色游戏对象移动到主场景,然后加载该场景。
  • 主要场景现在有可以与之交互的角色。到现在为止还挺好。其中一个命令是选择一个特定的角色并将其发送给一个任务,该任务有自己的任务场景。
  • 我可以将该角色移动到任务场景,并在任务完成时将其移回。但是,由于主要场景已被卸载,其他没有执行任务并且不应该在任务场景中的角色现在已被销毁。

我正在寻找一种模式来实现这一目标。我所阅读的大部分内容都建议使用DontDestroyOnLoad,但实际上这会将所有字符移动到所有场景中,这会导致任务场景中出现太多字符。另一种选择可能是创建一个包含所有角色信息的游戏对象,在场景之间传递,并在每个场景中使用逻辑来重新实例化该场景中的相应角色[s]。这感觉就像很多开销,因为我没有其他理由不断擦拭和重新创建它们。也许第三种选择是重构我的游戏,因此任务场景只是添加到主场景中,并显示为某种阻止/捕获输入的叠加层。这听起来很混乱,可能会出现性能问题(针对Android)。

有没有人有这个好的模式?

1 个答案:

答案 0 :(得分:0)

使用场景管理器,您可以创建一个空场景,在这个空场景中,您可以放置​​所有要保留的对象。

卸载第一个场景(不是您创建的场景)后,加载下一个场景。

当您下一个场景加载时,您将所有对象从您创建的场景传输到刚刚加载的场景。

PS:你有多个场景加载同时检查此链接以获取更多信息: https://docs.unity3d.com/ScriptReference/SceneManagement.SceneManager.html