В ходе работы над скриптом, возник вопрос такого плана. Имеем событие убиения зенитки. После чего стразу удаляем ее трупик. Пишем такой код:
и получаем стопроцентную ошибку.Код:public override void OnActorDead(int missionNumber, string shortName, AiActor actor, List<DamagerScore> damages) { base.OnActorDead(missionNumber, shortName, actor, damages); if (actor is AiGroundActor) { (actor as AiGroundActor).Destroy(); Sss("Удалили красную зену: " + actor.Name()); } }
Но если пишем все в точности так же, но делаем задержку в одну секунду, то никакой ошибки не возникает.
Почему такое происходит??? Получается, что нужно всегда делать задержку?Код:public override void OnActorDead(int missionNumber, string shortName, AiActor actor, List<DamagerScore> damages) { base.OnActorDead(missionNumber, shortName, actor, damages); if (actor is AiGroundActor) { Timeout(1, () => { (actor as AiGroundActor).Destroy(); Sss("Удалили красную зену: " + actor.Name()); }); } }






Ответить с цитированием