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

2023-11-05 17:15
文章标签 开发 游戏 中介 御用

本文主要是介绍游戏开发中的“御用中介“,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

引言

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

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

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

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

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

什么是中介者模式?

咦?2个Logo

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

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

狼来了,快跑!

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

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

2. 实现事件系统

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

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

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

中介者模式的优点

我的天

  • 降低了对象之间的耦合度,使系统更容易维护和扩展。
  • 提高了代码的可读性和可维护性,因为所有的交互都集中在一个地方。
  • 支持更灵活的系统设计,允许动态添加和移除对象,而不会破坏系统的稳定性。

一起来使用中介者模式

1.角色类与动画

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

FrameAnim真的好用

2.具体角色类

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

我是主角

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

我是NPC

3.中介者

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

我不赚差价

4.测试代码

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

小红帽?

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

上下左右BABA

5.结果演示

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

快跑!!!

结语

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

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

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

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

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

推荐专栏:

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

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

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

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

点击下方绿色按钮+关注

这篇关于游戏开发中的“御用中介“的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/351320

相关文章

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

使用Python开发一个现代化屏幕取色器

《使用Python开发一个现代化屏幕取色器》在UI设计、网页开发等场景中,颜色拾取是高频需求,:本文主要介绍如何使用Python开发一个现代化屏幕取色器,有需要的小伙伴可以参考一下... 目录一、项目概述二、核心功能解析2.1 实时颜色追踪2.2 智能颜色显示三、效果展示四、实现步骤详解4.1 环境配置4.

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

基于Python开发一个有趣的工作时长计算器

《基于Python开发一个有趣的工作时长计算器》随着远程办公和弹性工作制的兴起,个人及团队对于工作时长的准确统计需求日益增长,本文将使用Python和PyQt5打造一个工作时长计算器,感兴趣的小伙伴可... 目录概述功能介绍界面展示php软件使用步骤说明代码详解1.窗口初始化与布局2.工作时长计算核心逻辑3

python web 开发之Flask中间件与请求处理钩子的最佳实践

《pythonweb开发之Flask中间件与请求处理钩子的最佳实践》Flask作为轻量级Web框架,提供了灵活的请求处理机制,中间件和请求钩子允许开发者在请求处理的不同阶段插入自定义逻辑,实现诸如... 目录Flask中间件与请求处理钩子完全指南1. 引言2. 请求处理生命周期概述3. 请求钩子详解3.1

如何基于Python开发一个微信自动化工具

《如何基于Python开发一个微信自动化工具》在当今数字化办公场景中,自动化工具已成为提升工作效率的利器,本文将深入剖析一个基于Python的微信自动化工具开发全过程,有需要的小伙伴可以了解下... 目录概述功能全景1. 核心功能模块2. 特色功能效果展示1. 主界面概览2. 定时任务配置3. 操作日志演示

JavaScript实战:智能密码生成器开发指南

本文通过JavaScript实战开发智能密码生成器,详解如何运用crypto.getRandomValues实现加密级随机密码生成,包含多字符组合、安全强度可视化、易混淆字符排除等企业级功能。学习密码强度检测算法与信息熵计算原理,获取可直接嵌入项目的完整代码,提升Web应用的安全开发能力 目录

一文教你如何解决Python开发总是import出错的问题

《一文教你如何解决Python开发总是import出错的问题》经常朋友碰到Python开发的过程中import包报错的问题,所以本文将和大家介绍一下可编辑安装(EditableInstall)模式,可... 目录摘要1. 可编辑安装(Editable Install)模式到底在解决什么问题?2. 原理3.

Python+PyQt5开发一个Windows电脑启动项管理神器

《Python+PyQt5开发一个Windows电脑启动项管理神器》:本文主要介绍如何使用PyQt5开发一款颜值与功能并存的Windows启动项管理工具,不仅能查看/删除现有启动项,还能智能添加新... 目录开篇:为什么我们需要启动项管理工具功能全景图核心技术解析1. Windows注册表操作2. 启动文件

使用Python开发Markdown兼容公式格式转换工具

《使用Python开发Markdown兼容公式格式转换工具》在技术写作中我们经常遇到公式格式问题,例如MathML无法显示,LaTeX格式错乱等,所以本文我们将使用Python开发Markdown兼容... 目录一、工具背景二、环境配置(Windows 10/11)1. 创建conda环境2. 获取XSLT