Im необходимости использовать локальные переменные, но когда я их использовать для таймера (уменьшается время, пока условия не будут выполнены) он не работаетлокальные переменные Арент работать XNA при присваивании
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 (этот раздел он используется в функции обновления)
для этого фрагмента кода его штраф, но когда он мне нужен в цикле i должны использовать локальные переменные;
Я думаю, что понимаю, что вы подразумеваете, поставив его как переменную класса вместо локального, что я обычно делаю, но я не могу, потому что, как вы видите в этой части Weapons [i] << это список, плохо обновите вас с полным сегментом кода его просто цикл for, поскольку весь файл ... имеет несколько сотен строк. но я должен сделать список таймеров, но я не могу это сделать, потому что у id есть одна и та же проблема, я должен назначить таймер с оружием [i] .Laser.Rate << на лазер из-за разных видов оружия. и его нужно было бы назначить в функции обновления ... так бы случилось то же самое. – QuantumArchi
Я не уверен, что, похоже, проблема здесь, если быть честной. С учетом времени другой вариант, который я вижу, немного легче проверять, заключается в том, чтобы поместить поле LastFired вместо RemainingRecharge в класс, а когда вы пытаетесь запустить, проверьте, является ли LastFired + RechargeRate меньше текущего времени. Но все предложения предполагают, что вы можете редактировать классы. – Humungus