游戏开发中的"御用中介"

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

引言

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

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

游戏开发中的"御用中介"-中介者模式

让我们一起来探讨一下游戏开发中的中介者模式 ,这是一个非常常见 的设计模式,能够帮助游戏开发者更好地管理游戏内部的各种交互和通信

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

什么是中介者模式?

中介者模式是一种行为型设计模式 ,它的主要目标是减少组件之间的直接交互 ,将这些交互集中在一个中介者 对象中。在游戏开发中,这意味着将各个游戏对象之间的通信和协作 交给一个中介者来处理 ,而不是让它们直接互相通信。

中介者模式在游戏中的应用

1. 管理游戏对象之间的交互

在游戏中,有各种各样的游戏对象,例如角色、敌人、道具 等。它们通常需要相互协作 ,但直接的交互可能会导致复杂的依赖关系 。中介者模式可以用来管理 它们之间的交互,通过中介者对象来协调 它们的行为,从而降低系统的复杂性。

2. 实现事件系统

中介者模式可以被用来构建 游戏的事件系统 ,其中游戏对象不直接 通知其他对象,而是通过中介者发布和订阅事件 。这种方式可以简化 事件处理和管理,使游戏更容易扩展和维护

3. 多人游戏中的网络通信

在多人游戏中,各个玩家之间需要进行大量的通信和协作 。中介者模式可以用来处理网络通信 ,确保玩家之间的数据同步和协作 ,同时降低网络延迟和负载

中介者模式的优点

  • 降低 了对象之间的耦合度,使系统更容易维护和扩展。

  • 提高 了代码的可读性和可维护性,因为所有的交互都集中在一个地方。

  • 支持更灵活的系统设计,允许动态添加和移除对象,而不会破坏系统的稳定性。

一起来使用中介者模式

1.角色类与动画

首先声明一个Character角色基类,定义了动画组件,组件是FrameAnim序列帧动画组件,用于管理和播放 角色的序列帧动画 ,大家可以通过文章《CocosCreator帧动画组件FrameAnim实现与使用》获取。

2.具体角色类

首先声明一个Player类,它包含攻击attack、追逐chase、停止Stop方法。

然后声明一个Enemy类,它包含受伤takeDamage、逃跑escape方法。

3.中介者

声明一个Mediator中介类。主要用来处理玩家的请求和将请求传达给目标。

4.测试代码

首先按照惯例创建2个 具体的主角和怪物,本次测试主角是一头狼 、攻击目标是一个小女孩

监听事件,键盘space键控制玩家攻击,长按键盘d移动角色,放开d取消移动。

5.结果演示

测试成功,当狼追逐 的时候,小女孩逃跑 ,当狼停下来 的时候,小女孩也一起停下来 ,当狼攻击 的时候,小女孩应声倒地 。全程都是通过"御用中介"去处理和操作。

结语

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

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

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

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

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

推荐专栏:

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

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

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

关注我,发送"中介者模式"获取源码和源工程。

点击下方绿色按钮+关注

相关推荐
lvchaoq6 分钟前
页面停留时间过长导致token过期问题
前端
elangyipi12310 分钟前
深入理解前端项目中的 package.json 和 package-lock.json
前端·json
LYFlied23 分钟前
【算法解题模板】-【回溯】----“试错式”问题解决利器
前端·数据结构·算法·leetcode·面试·职场和发展
composurext23 分钟前
录音切片上传
前端·javascript·css
程序员小寒24 分钟前
前端高频面试题:深拷贝和浅拷贝的区别?
前端·javascript·面试
狮子座的男孩29 分钟前
html+css基础:07、css2的复合选择器_伪类选择器(概念、动态伪类、结构伪类(核心)、否定伪类、UI伪类、目标伪类、语言伪类)及伪元素选择器
前端·css·经验分享·html·伪类选择器·伪元素选择器·结构伪类
zhougl99630 分钟前
Vue 中的 `render` 函数
前端·javascript·vue.js
听风吟丶31 分钟前
Spring Boot 自动配置深度解析:原理、实战与源码追踪
前端·bootstrap·html
跟着珅聪学java32 分钟前
HTML中设置<select>下拉框默认值的详细教程
开发语言·前端·javascript
IT_陈寒32 分钟前
JavaScript 性能优化:5个被低估的V8引擎技巧让你的代码提速50%
前端·人工智能·后端