Я сделал небольшую аркадную игру, в которой логическая переменная отслеживает, окончена игра или нет (gameOver).
private bool gameOver;
Когда препятствие сталкивается с игроком, выполняется следующий метод:
public void OnCollisionEnter2D(Collision2D other)
{
//GameOver
gameOver = true;
}
Следующий метод должен увеличивать счет, только если значение gameOver равно false.
private void OnTriggerEnter2D(Collider2D other)
{
if (!gameOver)
{
if (int.Parse(scoreText.text) == 0)
{
scoreText.text = "1";
}
else if (int.Parse(scoreText.text) > 0)
{
int oldNumber = int.Parse(scoreText.text);
int newNumber = oldNumber + 1;
scoreText.text = newNumber.ToString();
}
}
Destroy(gameObject);
}
Но когда игра фактически «проиграна», счет продолжает расти. Я регистрировал значение gameOver в разное время, и кажется, что для значения gameOver установлено значение true в методе OnCollisionEnter2D, но при входе в метод OnTriggerEnter2D оно говорит false. Я попытался присвоить значение отдельным методом с ключевым словом out, но это тоже не сработало. Может кто-нибудь мне помочь? Заранее спасибо.