监听事件中函数的执行顺序

来源:互联网 发布:bbc纪录片中国网络支付 编辑:程序博客网 时间:2024/06/11 06:19
inst:ListenForEvent("onhitother", onHit)

这是用来监听攻击动作事件的,监听到后执行函数onHit

实际测试

local target = data.targetdata.damage = data.damage * 2local damage = data.damagedamage = damage * 1target.components.health:DoDelta(-damage)

这是onHit的一段代码,用手杖(伤害为17)攻击的伤害是51,即17 + 17 * 2,所以应该是先计算攻击的伤害,并应用在被攻击的对象上,然后在执行这个函数,而不是在攻击伤害计算之前执行。

对于下面的onAttack函数的执行也同理

inst:ListenForEvent("attacked", onAttack)

暂且将攻击分为

  • 攻击前摇
  • 攻击
  • 攻击后摇

由此初步设想监听事件的函数执行都是发生攻击后摇的阶段。


注:只通过上述测试是无法验证函数执行的前后的,不过配上监听事情“killed”时就可以完全的验证上述的结论,因为如果被攻击的对象在执行完语句

target.components.health:DoDelta(-damage)

之后死亡时,是不会触发“killer”事件的,比如说用攻击为30的武器去攻击health为45的对象,此时是触发不了“killed”事件的,因为先计算武器的30伤害,然后执行onHit函数,在执行onHit函数过程中,对象刚好死亡,如果攻击health为25的对象时,对象在被攻击的时候就已经死亡了,此时就会触发“killed”事件

0 0
原创粉丝点击