Unity设计模式—建造者模式(附代码)

Brief | 概要

建造者模式是一种创建型设计模式, 使你能够分步骤创建复杂对象。 该模式允许你使用相同的创建代码生成不同类型和形式的对象。

请添加图片描述

建造者模式关注如何逐步创建一个复杂的对象,可以分步骤生成对象, 而且允许你仅使用必须的步骤。 应用该模式后, 你再也不需要将几十个参数塞进构造函数里啦。

The Question | 需求

我的游戏里有两种类型的角色,分别是Monster和Pet。

他们都由如下部件组成:

  • AI,由AIFactory提供,Monster是MonsterAI,Pet是PetAI
  • Weapon | 武器,如果weaponId == null,则不添加武器组件
  • OnClickBehaviour | 点击后的响应脚本
  • Bag | 背包,Pet有背包,Monster没有背包。
  • Monster有属性HP,MP,HPMax,MPMax,ID,WeaponId
  • Pet有属性ID,followTransform

想想你会怎么写?

Bad Code Example | 差代码

如果不用设计模式,代码应该是这样的。

// Bad Code
// 生成一个Monster,没有武器
GameObject gameObject = LoadModel("Prefabs/Monster", "monster_1001");
Monster monster = gameObject.AddComponent<Monster>();
monster.hp = 100;
monster.maxHp = 100;
monster.mp = 0;
monster.maxMp = 50;
gameObject.AddComponent<MonsterAI>();
gameObject.AddComponent<OnClickBehaviour>();

// 生成Monster_1002,携带武器weapon002 
GameObject gameObject2 = LoadModel("Prefabs/Monster", "monster_1002");
Monster monster2 = gameObject2.AddComponent<Monster>();
monster.hp = 100;
monster.maxHp = 100;
monster.mp = 20;
monster.maxMp = 50;
gameObject2.AddComponent<MonsterAI>();
gameObject2.AddComponent<OnClickBehaviour>();
Weapon weapon = gameObject2.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NickPansh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值