gpt4 book ai didi

c# - Unity中两个场景之间如何通信?

转载 作者:行者123 更新时间:2023-12-02 19:33:31 26 4
gpt4 key购买 nike

我想为我的播放器制作一个颜色系统。在我的游戏场景中,玩家可以拾取硬币,并且硬币数量将通过playerprefs保存,但我不知道如何在菜单场景中使用硬币数量。我也需要一些关于播放器颜色选择器的帮助。当玩家选择一种颜色时,在我的游戏场景中必须向玩家指示该颜色。所以我想,我需要知道如何在两个场景之间进行通信。有人可以帮我一些教程吗?

最佳答案

有多种方法可以实现此目的,我认为这取决于个人喜好:将数据保存到文件、使用 DoNotDestroyOnLoad...

但据我了解,现在推荐的方法是创建一个“管理器场景”,它将在应用程序的整个生命周期中保持事件状态,并在其他场景打开和关闭时将数据传入和传出,而不是使用不要在加载时销毁:

It is recommended to avoid using DontDestroyOnLoad to persist manager GameObjects that you want to survive across scene loads. Instead, create a manager scene that has all your managers and use SceneManager.LoadScene(, LoadSceneMode.Additive) and SceneManager.UnloadScene to manage your game progress. src

请参阅 Unity 指南 here 。基本上,在任何给定时刻,您都会同时打开 2 个场景:经理场景和任何实际事件的游戏场景。然后,您可以通过事件委托(delegate)在两个开放场景中的脚本之间进行通信。它的工作方式是:

  1. 玩家在场景 1 中选择颜色
  2. 颜色通过事件委托(delegate)从 scene1 发送到管理器场景
  3. 场景1已卸载,场景2已加载
  4. 颜色从管理器场景发送到场景2

这是我现在在一个项目中使用的方法,如下所示: enter image description here

“0-Attract”、“1-Sealant”、“2-Paint”和“3-Conclusion”是我的实际游戏场景,“Manager Scene”包含所有其他场景中存在的所有内容(因此没有理由杀死并重生它们)以及我所有处理场景之间数据传递的“管理器”脚本。

请注意,多场景编辑一开始可能会令人困惑,因为您需要注意一些新事物(即哪个场景当前“事件”以及这意味着什么),因此请务必阅读统一指南我在上面摆了姿势。祝你好运!

关于c# - Unity中两个场景之间如何通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61430366/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com