你知道如何使用优雅的代码为游戏角色切换不同技能吗?

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

引言

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

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

优雅的代码,需要策略

大家好 ,今天我想和大家分享一下游戏开发中常用的设计模式 之一------策略模式 。策略模式是一种行为型设计模式 ,它通过定义一系列算法 ,将它们封装起来 ,并使它们可以相互替换 ,从而使算法的变化独立于使用算法的客户端。在游戏开发中,策略模式可以帮助我们实现更灵活、可维护的代码。

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

什么是策略模式?

首先 ,让我们来了解一下策略模式的基本概念。策略模式包含三个主要角色

  1. 环境(Context):持有一个策略类的引用,提供接口给客户端使用。
  2. 抽象策略(Strategy):定义了一组算法,为所有具体策略类所共享。
  3. 具体策略(ConcreteStrategy):实现抽象策略中的算法,提供具体的业务逻辑。

一起来使用策略模式

接下来,让我们看一个简单的例子 来说明策略模式的应用。假设我们正在开发一个角色扮演游戏 ,玩家可以通过选择不同的技能来进行攻击。我们可以使用策略模式来实现这个功能。

首先 ,我们定义一个策略类Skill,它有一个方法attack()用于执行技能。然后,我们创建两个具体策略类skill0skill1,分别实现紫色攻击和粉色攻击的逻辑。最后,我们在环境类Charater中使用这些策略。

1.准备资源

我们还是从82年祖传 的资源里面找到一个紫色的技能攻击特效 。但是一个技能可能不够演示策略模式。

但是对于一个PS大神 来说(不是),二话不说 我们打开熟悉PS,并且把紫色技能拖进去

然后通过ctrl+u调整色相 到87并点击确定,神奇的一幕出现了,技能变成了粉色。

最后通过文件-存储为-修改技能名字-保存生成新的粉色技能。

这样我们就得到一个粉色新技能(???)

2.环境

首先 定义我们的环境类Charater,其中包含attacklearnSkill接口,先在构造函数里面添加一个FrameAnim帧动画组件,关于帧动画组件的实现与使用 可以阅读《CocosCreator帧动画组件FrameAnim实现与使用》。

3.抽象策略

然后 定义一个抽象策略类Skill,包含attack接口,同时在构造函数中添加一个FrameAnim组件。

4.具体策略

最后 实现2个具体的策略类,分别是Skill0Skill1,唯一的区别就是加载不同的技能效果,正是我们准备的紫色技能和粉色技能资源。

5.测试代码

创建一个主角 ,同时实例化2个具体的技能。

监听 键盘事件,qwe分别执行空手攻击、装备Skill0后攻击和装备Skill1后攻击。

6.结果演示

在上面的例子中,我们通过将技能抽象成策略类 ,使得玩家可以自由选择不同的技能进行攻击 。如果以后需要添加更多的技能 ,只需要创建一个新的具体策略类 即可,而不需要修改 其他代码。这样,我们的代码就变得更加灵活、可维护了。

结语

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

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

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

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

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

推荐专栏:

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

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

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

关注我,发送"策略模式"获取源码和源工程。

点击下方绿色按钮+关注

相关推荐
橙子家17 分钟前
浏览器缓存之【结构化数据库与缓存】: IndexedDB、Cache storage 和 Storage buckets
前端
user205855615181323 分钟前
X6 中边悬浮置顶,规避 `mouseleave` 事件丢失问题
前端
李明卫杭州24 分钟前
CSS aspect-ratio 属性完全指南
前端
Pedantic2 小时前
SwiftUI 手势层级(Gesture Hierarchy)详解
前端
飘尘3 小时前
前端转型全栈(Java后端)的快速上手指引
前端·后端·全栈
一颗烂土豆3 小时前
Meshopt 压缩深度解析,为什么它比 Draco 更快
前端·javascript·webgl
浏览器工程师4 小时前
AI Agent 接浏览器任务,先别让它一路点到底
前端·后端
雨季mo浅忆4 小时前
VSCode自动格式化三要素
前端
爱勇宝5 小时前
深扒 Anthropic 1680 位工程师简历:应届生几乎没机会,AI 公司最缺的不是博士
前端·后端·程序员