Вы жестко закодировали значения.
const int maxFlashes = 3;
int numFlashesSoFar = 1;
if (numFlashesSoFar > maxFlashes)
{
//...
}
if (numFlashesSoFar > maxFlashes)
фактически равно if (1 > 3)
, что никогда не соответствует действительности.
Я действительно не понимаю, почему вы структурироваликод, как вы сделали, что затрудняет мне понимание основной проблемы здесь.
В этом гораздо больше смысла:
const int maxFlashes = 3;
int numFlashesSoFar = 1;
while (numFlashesSoFar <= maxFlashes)
{
yield return new WaitForSecondsRealtime(0.05f);
this.Renderer.enabled = true;
yield return new WaitForSecondsRealtime(0.05f);
this.Renderer.enabled = false;
Debug.Log("Number of short flashes so far: " + numFlashesSoFar);
numFlashesSoFar++;
}
Debug.Log("All 3 short flashes finished!");
this.finishedShortFlashes = true;
Обратите внимание, что вам не нужен if
.Когда цикл while
заканчивается, вы уже знаете, что условие выполнено (в противном случае цикл while
еще не закончился бы.
Я не понимаю цели yield break;
в вашем кодеЭто кажется ненужным, поэтому я удалил его.