[求教]请问基于回合制的buff和debuff的实现,是否有比较便捷的方式?
Rusty
2018-04-16
aventzero
2018-08-08
你可以把每个状态变成一个obj,然后这个obj作用于一个目标对象,为这个obj创建一个有限状态机直到它销毁
美词声音工作室
2018-08-09
底特律:变人 中文配音 美茨声音工作室制作 https://www.bilibili.com/video/av28893473/
kin0lz
2018-10-04
用一个有序数组来存储人物身上的buff和debuff(其实可以把这两种buff一视同仁)。每当新增buff或者debuff的时候,对数组进行修改,并且根据buff的类型来决定是否重新遍历数组。一般当buff的效果会修改某些属性时,需要重新遍历buff数组以重新计算人物的属性。
kin0lz
2018-10-04
而某些buff除了修改人物的属性,还会带来一些其他的效果(如身边环绕可以攻击敌人的飞球,每过几秒钟就掉血之类的),这类buff属于特殊buff,依然要把buff的标签和相关属性存入数组,在遍历数组的时候会根据不同的标签进行特殊的处理。某些buff也可以创建新的obj。总之你要有把buff统一存储,统一管理的思想。
kin0lz
2018-10-04
最后,别忘了给你的buff确定优先级。比如,对属性的修改,加减是在乘除之前还是之后,普通buff和特殊buff(创建obj的buff)哪个先执行之类的问题。
kin0lz
2018-10-04
啊对了,还要做一个buff计时器,这个就很简单了,思路和上述类似
直接写个buff声明脚本,把公用的buff写进去
atk_up = false ;
def_up = false ;
…
…
然后再双方parent的create事件里调用声明这一堆buff
然后在buff或debuff被触发的时候直接把值设为true去判断?
要维护buff类型的时候就来改这个脚本
独有的buff就单开一个脚本存?
是不是太粗暴了……