我需要使用局部变量,但是当我将它们用于计时器时(减少时间直到满足条件)它不起作用
for (int i = 0; i < Weapons.Count; i++)
{
if (Weapons[i].ItemType == 6)
{
if (standard.IsKeyDown(Keys.G))
{
Cannons.Add(new CannonFire(this));
}
}
else if (Weapons[i].ItemType == 7)
{
float Recharge = Weapons[i].Laser.Rate;
Recharge -= (float)gametime.ElapsedGameTime.Seconds;
if (standard.IsKeyDown(Keys.G) && Recharge < 0)
{
laser.Add(new LaserFire(this, new Vector3(Weapons[i].Laser.range, 1, 1) ));
Recharge = Weapons[i].Laser.Rate;
}
}
}
其他相关代码是我从中获得费率的地方
public class LaserItem
{
float Damage;
float Range;
float Last;
float RechargeRate;
public float damage
{
get { return Damage; }
set { Damage = value; }
}
public float Rate
{
get { return RechargeRate; }
set { RechargeRate = value; }
}
public float Life
{
get { return Last; }
set { Last = value; }
}
它可以在没有计时器的情况下工作,但我不能那样做,因为我不希望每次有人击键时都制造 300 个激光器。据我所知,计时器设置为每帧的激光速率,因此它永远不会达到 0(本节在更新功能中)
对于这段代码很好,但是当我在循环中需要它时,我必须使用局部变量;