Godot Singletons and Autoloads(单例和自动加载)
介绍
Godot的场景系统功能强大且灵活,但有一个缺点:没有一种方法可以存储多个场景所需的信息(例如,玩家的得分或存货)。
可以通过一些解决方法来解决此问题,但是它们有其自身的局限性:
- 您可以使用一个 "主 "场景,它可以加载和卸载其他场景(这些场景作为它的子场景)。然而,这意味着你不能再单独运行这些场景并期望它们能正常工作。
- 可以将信息存储在user://中的磁盘上,然后由需要的场景进行加载,但是频繁的保存和加载数据很麻烦,而且可能会很慢。
Singleton模式是解决常见用例的有用工具,在这些用例中,你需要在场景之间存储持久化信息。在我们的案例下,可以将相同的场景或类重用于多个单例,只要它们具有不同的名称即可。
利用这个概念,你可以创建这样的对象。
- 无论当前运行的是哪个场景,都会被加载。
- 可以存储全局变量,如玩家信息。
- 可以处理场景的切换和场景之间的转换。
- 像单例一样工作,因为GDScript在设计上不支持全局变量。
自动加载节点和脚本可以为我们提供这些特征。
注意
Godot不会按照单例设计模式将AutoLoad设置为“真正的”单例。 如果需要,用户可能仍会多次实例化它。