【发布时间】:2016-11-30 16:08:51
【问题描述】:
我正在寻找一种在场景之间转换的模式,将对象的一个实例移动到下一个场景,然后将其返回到前一个场景,但不会破坏前一个场景中的其他对象。这是上下文:
- 当我的游戏加载时,它会连接到我的服务器以获取玩家可以控制的角色列表,并从预制件中动态实例化它们。
- 加载脚本将每个角色游戏对象移动到主场景,然后加载该场景。
- 主场景现在有了可以互动的角色。到现在为止还挺好。其中一个命令是选择一个特定的角色并将他们发送到一个任务中,该任务有自己的任务场景。
- 我可以将该角色移动到任务场景,并在任务完成后将其移回。但是,由于主场景已卸载,其他不在任务中且不应出现在任务场景中的角色现在已被销毁。
我正在寻找一种模式来实现这一点。我读过的大部分内容都建议使用 DontDestroyOnLoad,但这实际上会将所有角色移动到所有场景中,这会导致任务场景中的角色过多。另一种选择可能是创建一个包含所有角色信息的游戏对象,在场景之间传递信息,并在每个场景中使用逻辑来重新实例化该场景中的适当角色。这感觉像是很多开销,因为我没有其他理由不断擦拭和重新创建它们。也许第三种选择是重组我的游戏,以便将任务场景添加到主场景并显示为某种覆盖/捕获输入的覆盖。这听起来很混乱,并且可能存在性能问题(针对 Android)。
有人对此有好的模式吗?
【问题讨论】:
-
每个角色需要多个实例吗?只要您不需要 2 个“弓箭手”或其他任何东西,静态声明就可以做到。
-
是的,我需要多个字符,这就是我遇到这个问题的原因——移动一个字符相对简单。每个角色都是一个探索者。你,玩家,可以雇佣他们(导致不止一个),你可以派他们去冒险。每次冒险只能有一个探险者进行,其他探险者在不冒险时需要留在主场景中。
-
静态列表
应该可以工作。在创建它们时,将它们添加到列表中。 -
是的,我知道有多个字符。我假设每个角色类型都有 1 个职业,但每个职业可能只有 1 个实例(1 个巫师、1 个弓箭手、1 个小偷等)。
-
啊,不,我有一个资源管理器类,其中可能有 n 个实例(可能达到一个合理的数字,例如 10 —— 太多的嘴不能喂饱!)。
标签: unity3d