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

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

引言

大家好,我是亿元程序员,一位有着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独立游戏开发框架

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

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

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

点击下方绿色按钮+关注

相关推荐
Java后端的Ai之路1 小时前
06-React-Props
前端·react.js·前端框架
Flynt2 小时前
开源"间谍卫星"说数据全是真的,我把它的免key数据源挨个试了一遍
前端·开源·数据可视化
Csvn2 小时前
渲染管线
前端
程序员大阳2 小时前
副队长CSS教程(33)–圆角与透明
前端·css·透明·圆角
志尊宝2 小时前
Vue3 零基础每日笔记(082):文件上传实战——el-upload 校验、自定义上传、头像预览
前端·javascript·vue.js·笔记·#javascript·#vue.js
鬼手点金3 小时前
opencode-rules 插件
java·开发语言·前端·人工智能·chrome·git·github
柳杉3 小时前
借助 Codex 和可视化工作流,从调研到完整实现,3D 大屏竟然可以这么简单
前端·ai编程·数据可视化
IMPYLH3 小时前
HTML 的 <wbr> 元素
前端·html
Dovis(誓平步青云)4 小时前
常用命令藏得太深?怎么做一个快捷命令坞
运维·前端·自动化·音视频·prometheus
IT_陈寒5 小时前
Vite的这个问题坑了我三天,原来如此解决!
前端·人工智能·后端