Я хочу симулировать регенерацию здоровья в моей игре в единстве, в функции RestoreHealth()
.
Не слишком ли я продуман, желая создать дочерний процесс, поэтому, когда я вызываю wait, он не будетповлияет на любой текущий запущенный процесс или поток, и дочерний процесс умрет, когда функция будет выполнена.
public void RestoreHealth() {
if (health >= MaxHealth) return; // health and MaxHealth are Class variables
if (health % 10 != 0) { // if health is not dividable by 10
int temp = health % 10; // then we round it to the closest
//tenth
temp = 10 - temp;
health += temp;
}
int i = health;
for (; i < MaxHealth; i += 10) { // where the health grows till 100
health += 10;
// sleep(1000); // make function wait for '1 second' to iterate again
Debug.Log("Health: " + health);
}
}
Как создать в этом случае дочерний процесс в C # или Unity и заставить его ждать?
Есть ли эквивалент Fork();
, как в C?
Также эта функция вызывается, когда игрок изначально получает урон.
Решение :
примечание: я изменил здоровье на Броню
public IEnumerator RestoreArmour() {
while (_Armour < _MaxArmour) {
_Armour++;
Debug.Log("Health: " + _Armour);
yield return new WaitForSeconds(ArmourRegenRate); // ArmourRegenRate is a
// float for the seconds
}
}
и используйте это для запуска сопрограммы
void Start(){
StartCoroutine(player.RestoreArmour());
}