我认为不要过分考虑这个问题会得到最好的结果,因此我将在您的游戏中实现一个简单的键值保存系统,将其与其他保存数据一起存储,然后在需要访问以前的状态时按需加载。
该流程可能如下所示:
- 文件加载级别
- 放置图块/对象之前,请检查其是否具有“持久”属性。
- 如果是,请执行以下操作:检查已保存的键值对是否存在与属性匹配的键,并获取适当的值。
- 如果否:按正常放置对象
- 当玩家退出关卡时/使用“永久”属性保存所有对象的游戏循环,并将它们另存为键值对。
这是一个基于我在简单2D游戏中使用的伪代码示例:
def load_map(map):
for y in range(0, height):
for x in range(0, width):
tile = map[x, y]
for property in tile.properties:
if is_persistent(property.name):
// Name prefixed with "persistent" means that it's persistent
// so we load the value from out persistent storage
property.value = persistent_values[property.name]
def save_map(map):
... everything in load_map ...
if (property.name.matches("persistent_*")):
// Name prefixed with "persistent" means that it's persistent
// so we save the value to persistent storage
persistent_values[property.name] = property.value
def is_persistent(name):
return name.matches("persistent_*") and persistent_values.contains(name)
然后,我可以使用此属性检查状态:
def draw():
if properties["persistent_is_pressed"].value:
draw_sprite(button_pressed)
else:
draw_sprite(button_unpressed)
def on_pressed():
properties["persistent_is_pressed"].value = not properties["persistent_is_pressed"].value
如果您使用的是诸如Tiled之类的切片地图编辑器,则添加这样的属性非常容易:
希望这会给您一个关于如何尽可能简单地实现持久状态的想法!