前言
我在这之前写常见设计模式在游戏开发中的使用,本以为是不是类似的部分都需要通过设计模式去写,后来发现并不是。很多功能并非只有一种解决方式,看你个人的风格。我个人还在学习的阶段,发现有的教程的主讲的代码写作风格区别真的很大!我真感觉有的老师或者教程主讲人可能是学java转过来的,TS给了他们足够的舞台,他们写的代码和java几乎没有区别,直接改后缀.java应该是可以扔到jdk不报错的,而另一个却完全不是这样!
这时我好像就理解设计模式的作用了,他更多是一种规范,如果说通俗点,就是让你套公式,为了让更多人的代码写让**同事能看懂。**在很多的时候游戏中涉及到各个系统,多少时候我们只是一个螺丝钉,只是要用到这些系统的某些功能,这个时候就需要你能看懂,而都理解设计模式就可以更好的看懂源码。但是他真的更好维护吗?当想处理一个Bug发现代码一环套一环 一个类套一个类的时候,想找到哪个报错的原因真的难的时候,我并没有发现他哪里好维护。
一句话说个人体会:设计模式,是一种妥协,一种相互妥协。
一、工厂模式
工厂模式是一种创建对象的设计模式,它将对象的创建和使用分离,使得代码的维护和扩展更加方便。在 TypeScript(TS)游戏开发中,工厂模式有着重要的应用。
以下是一个简单的 TS 工厂模式的代码示例:
// 抽象产品类
abstract class GameItem { }
// 具体产品类,比如游戏中的武器类
class Weapon extends GameItem {
constructor(public name: string, public damage: number) {
super();
}
}
// 工厂类
class GameItemFactory {
createItem(type: string, name: string, damage?: number): GameItem {
if (type === 'Weapon') {
return new Weapon(name, damage!);
}
return null;
}
}
工厂模式在游戏开发中的使用场景:
游戏物品创建系统
在游戏中,物品多样。以武器创建为例,用工厂模式创建物品工厂。玩家获取或购买武器时,通过该工厂创建。开发人员可在工厂统一管理创建逻辑,如确定武器属性。更新游戏调整属性计算或添加属性时,只需修改工厂类代码,提高可维护性,也便于扩展新物品类型。
游戏关卡元素生成
游戏关卡有敌人、陷阱、宝箱等元素。创建关卡元素工厂,能按关卡设计生成特定元素。比如创建相应敌人对象,包括种类、属性、行为模式。对于宝箱,可设置物品生成规则。修改关卡元素时,在工厂调整生成逻辑,保证关卡设计的灵活性和可维护性。
工厂模式就像是游戏世界中的 “神秘铸造坊”。想象一下,在精彩的游戏世界,无数元素需被创造。没有工厂模式,创建逻辑要在各模块重复编写,效率低且杂乱。若有变化,修改困难。而工厂模式像 “神秘铸造坊”,可按规则制造各种游戏对象,是构建游戏内容的利器,让游戏世界更生动。
二、装饰者模式
装饰者模式是一种结构型设计模式,它允许在运行时动态地给对象添加新的行为。
以下是一个简单的 TS 装饰者模式的代码示例:
// 抽象组件(被装饰的对象的基类)
abstract class GameComponent {
abstract operation(): void;
}
// 具体组件(基础游戏对象)
class BasicGameObject implements GameComponent {
operation() {
console.log("基础游戏对象的操作");
}
}
// 抽象装饰者类
abstract class GameDecorator implements GameComponent {
protected component: GameComponent;
constructor(component: GameComponent) {
this.component = component;
}
abstract operation(): void;
}
// 具体装饰者类,比如添加额外功能的装饰者
class ExtraFunctionDecorator extends GameDecorator {
operation() {
this.component.operation();
console.log("添加额外功能");
}
}
角色能力增强
角色扮演游戏中,角色有基本能力。用装饰者模式可据角色升级、获装备情况,为其添加如 “暴击强化”“吸血效果” 等特殊技能,增强角色能力,且不修改原始类,保持代码稳定性和扩展性。
游戏场景美化
游戏场景有基本外观。通过装饰者模式可添加 “萤火虫特效”“迷雾效果” 等,根据剧情、时间或玩家选择动态添加,增强场景表现力,给玩家更好视觉体验。
装饰者模式就像游戏世界中的 “魔法画笔”。在已构建好的游戏世界里,若没有此模式,添加新功能或效果要大量修改代码。而它能在不破坏原有基础上,灵活添加新色彩和细节,让游戏更精彩。