状态机概述
项目使用 Callable 实现了一个轻量级的状态机,用于管理敌人 AI 的行为状态。这种方式比传统的状态模式更灵活。
类定义
class_name CallableStateMachine
var state_dictionary = {}
var current_state: String
2026/3/16大约 3 分钟
项目使用 Callable 实现了一个轻量级的状态机,用于管理敌人 AI 的行为状态。这种方式比传统的状态模式更灵活。
class_name CallableStateMachine
var state_dictionary = {}
var current_state: String
想象一下这样的场景:你正在制作一款RPG游戏,玩家在村庄地图收集了100枚金币,然后进入了森林地图。此时你发现玩家的金币数据丢失了,因为场景切换后,原来的节点树被销毁了。
或者你想制作一个背景音乐播放器,希望音乐能在不同场景间连续播放。但每次切换场景,音乐都会重新开始,因为AudioStreamPlayer节点跟随场景一起被重新创建了。
再比如,你想在游戏的任何地方都能调用一个暂停功能,或者记录游戏设置。如果把这些功能分散在各个场景中,不仅代码会重复,还很难保证数据的一致性。
这些问题的本质都是一样的:如何创建一个在整个游戏生命周期中始终存在的节点?
在Godot中,这个问题有一个优雅的解决方案——自动加载(AutoLoad)。
在游戏开发中,有两种主要的架构模式:继承模式和组件模式。