В Unity3D это мой код:
void ActivateBuff1(){
gun.equippedGun.msPerShot /= 2;
gun.equippedGun.shotsLeftInMag += 10;
StartCoroutine (WaitRage ());
}
void ActivateBuff2(){
player.speedModifier *= 1.5f;
StartCoroutine (WaitSpeed ());
}
IEnumerator WaitRage(){
yield return new WaitForSeconds(powerUpDuration);
gun.equippedGun.msPerShot *= 2;
}
IEnumerator WaitSpeed(){
yield return new WaitForSeconds(powerUpDuration);
player.speedModifier /= 1.5f;
}
Каждый раз, когда игрок запускается, активируется один из методов ActivateBuff. Очевидно, эффекты powerUps не длится вечно, поэтому я использовал IEnumerators
, чтобы отменить эффекты моего исходного метода после ожидания определенного количества секунд. По какой-то причине код внутри IEnumerators
никогда не вызван. Пожалуйста, помогите... (и, пожалуйста, предложите альтернативный способ кодирования этого, возможно, поскольку я знаю, что это не очень чисто)