Я знаю, что это проблема новичка, но я не могу прогрессировать с учебой, пока не пойму, что здесь происходит. В блоке if, который я выполняю в Update(), я не могу понять, почему два оператора if выполняются одновременно. Я думал, что как только инициативная переменная будет инициализирована в начале блока, компилятор перейдет к первому оператору if, чтобы убедиться, что условие истинно. Если это правда, он будет выполнять код в этом блоке до тех пор, пока таймер не достигнет нуля. Затем он переместился бы вниз. Если условие было истинным в первом, тогда во втором было бы ложно, так что оно снова вернется к началу. Для инициативы будет рассчитано новое значение bool, и процесс будет повторен. Что мне кажется, что независимо от того, что я делаю, выполняются оба блока, и таймеры полностью игнорируются. Это очень запутанно!Почему в моей инструкции if игнорируются условия? C#
Я сделал очень простой код, чтобы подчеркнуть проблему, с которой я сталкиваюсь. Я использую этот код C# в Unity3d:
public float firstTimer = 2;
public float secondTimer = 10;
public bool initiative;
void Update()
{
initiative = InitiativeOrder();
if(initiative == true && firstTimer > 0);
{
firstTimer -= Time.deltaTime;
Debug.Log ("First timer has finished!");
}
if(initiative == false && secondTimer > 0);
{
secondTimer -= Time.deltaTime;
Debug.Log ("Second timer has finished!");
}
}
public bool InitiativeOrder()
{
float player = Random.Range(1,10);
float enemy = Random.Range(1,10);
if(player > enemy)
{
return true;
}
else if (player < enemy)
{
return false;
}
else
{
return true;
}
}
удалить; после вашего if() if (инициатива == true && firstTimer> 0); – JRowan