在运行一个血条代码的时候出血了一点问题
def__init__(self):
self.hp = 玩家当前生命值
self.max_hp = 玩家最大生命值
self.hpAni = self.hp/self.max_hp
def HP_Bar(self):
if 玩家当前生命值 != self.hp or 玩家最大生命值 != self.max_hp: # 最大生命值或当前生命值改变时触发
self.hp = 玩家当前生命值
self.max_hp = 玩家最大生命值
self.hpPercent = float(self.hp) / float(self.max_hp) # 当前血量百分比
if self.hpAni > self.hpPercent:
self.hpAni -= 0.01
self.GetBaseUIControl(self.hp_bar).asProgressBar().SetValue(self.hpAni)
elif self.hpAni < self.hpPercent:
self.hpAni += 0.01
self.GetBaseUIControl(self.hp_bar).asProgressBar().SetValue(self.hpAni)
这是一个一秒执行30次的函数,一直就是动态刷新血条
可是不知道为什么后面两个if,elif会不断跳入
造成血条+0.01 -0.01
当我把elif改成if就正常了
请问有知道为什么的吗
elif是针对统计的if而言的,如果全部都是if,代码会逐个进行判断是否满足
如果存在elif,那么只会选择第一个逻辑值为true的运行,且后续不再进行判断
逻辑就在这里
elif 与 之前的if构成配对,相当于 else if,执行else中的条件(不满足if的条件)
if 与 之前的if是平等关系,不论之前的if 是否执行,当前的if都会执行并判断