一些经常用到的游戏设计模式

本文介绍了游戏开发中常见的设计模式,如状态模式用于游戏场景转换,外观模式简化子系统使用,单例模式确保对象唯一,中介者模式解决子系统间耦合,游戏循环模式保证游戏运行。此外,还涉及角色设计中的桥接、策略、模板方法和状态模式,角色产生中的工厂方法和建造者模式,以及享元模式在资源管理中的应用。
摘要由CSDN通过智能技术生成

>>>>>>>>>>>>>>>>>>>>>>>>>>长文预警>>>>>>>>>>>>>>>>>>>>>>>>


==========================基础系统=========================

1-1、游戏场景的转换——状态模式

定义:

让一个对象内部的行为随着内部状态的改变而变化,而该对象也像是换了类一样。

 

目的:

为了更改程序时不用修改switch中的大量语句,将switch语句用以下设计模式代替。

 

实现:

状态控制者:提供设置状态、更新状态的方法。相当于switch

状态接口类:规定状态的通性。

状态实现类:具体的状态。相当于case

 

使用:

在外部,先调用状态控制者的设置方法设置一个状态,再调用状态控制者的更新方法,更新可能会改变的状态。

 

应用:

角色AI:控制不同的行为。

连线状态:连线、连线中、断线。

关卡状态:开始、进行、结束、分数计算。

———————————————————————————————————————

1-2、游戏主要类——外观模式

定义:

为子系统定义一组统一的接口,这个高级的接口会让子系统更容易被使用。有点像汽车给驾驶员提供的仪表盘和操作按键。

 

目的:

将原本在场景中使用到的众多子系统,统一抽到一个新的类中封装,让子系统的使用变得统一简单。

 

实现:

外观者:包含子系统的初始化、更新方法,并提供操控界面。

子系统:各个子系统的功能实现。

 

使用:

在外部,分别调用外观者的初始化、更新方法。

 

应用:

网络引擎:连线管理系统、信息时间系统、数据封包管理系统。

数据库引擎:增删查改等为子系统的封装。

———————————————————————————————————————

1-3、获取游戏服务的唯一对象——单例模式

定义:

确认类只有一个对象,并提供一个全局的方式来获取这个对象。

 

目的:

防止外部任意产生该对象造成的错误,并解决“快速使用该对象”的需求。

 

实现:

单例对象:先将该对象的构造方法设为私有,不让外界通过new初始化该对象。再提供一个私有静态的自身类型的变量,并提供该变量的公有静态getter方法,记得在合适的地方初始化该变量,这样只要调用会一直存在一个全局的该对象,该getter方法一般被重命名为instance

 

使用:

在外部,调用该对象的返回该对象的getter方法。

 

应用:

网络在线客户端:限制连接数。

日志工具:方便开发者快速调用进行调试。

 

注意:

尽量少用单例模式,因为不仅很多时候可以用其他方法满足“快速使用对象”和”限制对象个数“的要求,还会遇到一定程度上违反面向对象理念、继承拓展有很大的困难、长时间不用可能会被垃圾回收、多线程环境下可能会实例化多个对象的问题。

———————————————————————————————————————

1-4、游戏内各系统的整合——中介者模式

定义:

定义一个接口用来封装一群对象的互动行为。中介者通过移除对象之间的引用,来减少他们之间的耦合度,并且能改变它们之间的互动独立性。有点像快递公司移除了用户间的来往,它替用户来往。

 

目的:

解决各个子系统之间互相依赖的问题,避免维护困难。将子系统之间的引用转移到名为中介者的类上去。

 

实现:

中介者接口:定义一个消息传递方法,用于接收消息,然后经过

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值