为什么这样设计游戏存档功能BUG比较少?

461 阅读5分钟

点击上方亿元程序员+关注和★星标

想回到过去

引言

大家好,我是亿元程序员,一位有着8年游戏行业经验的主程。

本系列是《和8年游戏主程一起学习设计模式》,让糟糕的代码在潜移默化中升华,欢迎大家关注分享收藏订阅。

游戏中的存档功能我们可以利用设计模式中的备忘录模式完成,BUG还比较少

在游戏开发过程中,我们经常会遇到需要保存和恢复对象状态的场景。为了解决这个问题,我们可以使用备忘录模式。那么,什么是备忘录模式?它有哪些优点?又该如何在游戏开发中使用呢?本文将为您详细介绍。

本文源码和源工程在文末获取,小伙伴们自行前往。

什么是备忘录模式?

备忘录模式(Memento Pattern)是一种行为型设计模式,它通过创建一个备忘录来存储对象的内部状态,以便在需要时恢复对象的状态。这种模式主要用于避免对象状态的频繁变化,从而提高性能。

它主要包含三个角色:发起人(Originator)、备忘录(Memento)和负责人(Caretaker)。

备忘录模式的优点

  1. 简化了对象的状态管理:备忘录模式将复杂的状态管理过程封装在备忘录类中,使得客户端代码更加简洁。

  2. 提高了代码的可读性和可维护性:通过使用备忘录模式,我们可以将对象的状态恢复逻辑与业务逻辑分离,使得代码更加清晰易懂。

  3. 降低了系统的耦合度:备忘录模式使得对象的状态恢复过程与客户端代码解耦,降低了系统之间的依赖关系。

如何在游戏开发中使用备忘录模式设计存档功能?

在游戏开发中,我们经常需要保存和恢复游戏关卡、角色状态等对象的状态。以下是一个简单的示例,展示了如何在游戏开发中使用备忘录模式。

1.备忘录类

首先定义一个备忘录类,用于存储发起人的内部状态。备忘录通常包含一个或多个属性,用于表示发起人的状态。同时,备忘录可以防止发起人以外的其他对象访问其内部状态。这里我们存储兔子的坐标

沉默支撑跃过陌生

2.发起人类

然后定义一个发起人类,用于记录当前时刻的内部状态,并负责定义哪些属于备份范围的状态。此外,发起人还需要负责创建备忘录以及使用备忘录恢复状态。这里我们负责创建兔子坐标的备忘录信息恢复兔子的坐标信息

静静看着凌晨黄昏

3.负责人类

最后定义一个负责人类,负责保存备忘录,但并不对备忘录的内容进行操作或检查。负责人提供保存与获取备忘录的功能,使得在需要的时候可以恢复发起人的某一历史状态。这里负责保存和恢复兔子坐标的备忘录信息。

分散时间的注意

4.测试代码

今天我们的主角是一只兔子,按照惯例加载兔子并且播放动画,然后我们创建一个发起人Originator以及负责人Caretaker

你的身影

然后添加交互事件:包括兔子的拖拽效果,改变兔子的位置,以及键盘事件s保存和r恢复。

失去平衡

5.结果演示

首先我们通过鼠标拖拽兔子到不同的位置,同时通过键盘s记录每个位置的坐标信息

慢慢下沉

然后通过键盘r将兔子恢复到前面逐个记录的位置

想回到过去

通过以上示例,我们可以看到,在游戏开发中使用备忘录模式可以有效地简化对象状态的管理,提高代码的可读性和可维护性。同时,备忘录模式还可以降低系统之间的耦合度,使得代码更加灵活和易于扩展

结语

在哪里可以看到如此清晰的思路,快跟上我的节奏!关注我,和我一起了解游戏行业最新动态,学习游戏开发技巧。

本系列是《和8年游戏主程一起学习设计模式》,让糟糕的代码在潜移默化中升华,欢迎大家关注分享收藏订阅。

我是"亿元程序员",一位有着8年游戏行业经验的主程。在游戏开发中,希望能给到您帮助, 也希望通过您能帮助到大家。

AD:笔者线上的小游戏《贪吃蛇掌机经典》《重力迷宫球》《填色之旅》大家可以自行点击搜索体验。

实不相瞒,想要个在看!请把该文章分享给你觉得有需要的其他小伙伴。谢谢!

推荐专栏:

8年主程手把手打造Cocos独立游戏开发框架

从零开始开发贪吃蛇小游戏到上线系列

游戏开发的技巧、心得、资讯

关注我,发送"备忘录模式"获取源码和源工程。

点击下方绿色按钮+关注