《设计模式与游戏完美开发》-建造者模式(Builder)恶棍笔记

本文深入解析建造者模式,探讨其在游戏开发中的应用。通过创建BuilderSystem指导具体建造过程,如资源读取、脚本添加、武器设定及属性配置等,实现角色的灵活创建与扩展。文章还介绍了如何通过Director类统一控制建造流程,提高开发效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

建造者模式(Builder)!
耳濡目染,久闻大名。

一个有个性的builder类,规定了某些固定流程我要怎么build。就像是一个写好了需求的订单~【规定了流程噢!】订单里面存的是过程。所以我们可以有一个父类abtract,规定了过程。然后一些子类,规定了如何实现其中的过程。这其实就是所有信息啦!
~订单~

  1. 给产品do1(实打实的do)
  2. 给产品do2(实打实的do)
  3. 给产品do3(实打实的do)

我们创建一个订单。
然后把订单扔给机器。

机器表示:收到!
机器:已生产产品模型new product.
机器:执行订单上的第一步!订单.do1(产品)
机器:执行订单上的第二步!订单.do2(产品)
机器:执行订单上的第三步!订单.do3(产品)

这样其实就结束啦。
为了更好的称呼这个机器。我们建立一个director来做这件事。因为机器做的就是指导员的感觉。

一个Construct函数来组合处理加粗部分的流程。即可~完成。

游戏中的实现

游戏中,我们也是建立了一个BuilderSystem(就是directior)传入一个builder,

  1. builder读取资源
  2. builder增加响应脚本
  3. builder增加武器
  4. builder设置属性(根据id并找到自己的attr返回~(详情请看……【享元模式篇】))
  5. builder增加ai.

注意注意!

最后,在工厂里,初始化的时候就会建立一个director。
然后在create_soldier方法中,有一个行是这样写。(
s= new thesoldierbuilder()
s.setBuilderPara(soldierParam)//这个param是为了创建而制作的。和创建时需要调用的数据有关。
director.construct(s);
OK!

在制作过程中,一般会用到很多数据,比如某一个士兵的武器型号呀、【实例】呀、位置呀、属性key呀、实例名称呀等等。先为这些数据造一个盒子param类。
在建造的过程中,工厂函数会创建一个这个类实例(空的)。把它送给builder。然后builder写好了具体读取什么资源呀、什么属性key啊的情况(就像是有一个决定了各类内容的excel),在制作过程中把这个param类给填好了。(建造完毕后基本上没啥用了,因为内容都已经付给里面的这个【实例】的属性了)

所以在director.construct(s)之后,
我们会return param.实例 as solder;作为最后创建出来的类。

仔细回味

Factory接受一个建造的指令和参数。

  1. 先把参数都存到一个新的param中。
  2. 建立一个对应的builder,把param给它。
  3. 执行construct,让builder按照director的要求进行制造调用builder中的函数,不断加工param中的怪物实例。
  4. 返回加工好的param中的怪物实例。

一个factory中做了很多很细节的处理。虽然小,但是有用。
因为我可以:

  1. 单独的增加一些属性。并且我知道去factroy制造函数中加一下,然后去各个builder里面加一下。这个流程(额……好像也不是那么简单哈!不过可以结合其他模式!佛挡杀佛!程序就是不断细节的过程……)
  2. 所有的角色处理都可以马上添加一个中间流程:比如加一个super脚本。可以很快处理好。在director中处理即可。比如在创建完之后加一个特效~
  3. 需要增加一种新的角色时,只需要继承一个现有的builder进行改动即可。非常非常方便!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值