Кто-нибудь знает, как отключить скрипт при изменении меню

#c# #unity3d

#c# #unity3d

Вопрос:

Я просто хочу, чтобы шар перестал появляться, когда включено меню перезапуска, но я не могу заставить его работать вообще, может кто-нибудь, пожалуйста, помогите. Вот сценарий

 void Start()
{
    
    StartCoroutine(SpawnBallLoop());
    
}

IEnumerator SpawnBallLoop()
{
    while (gameOver == false)
    {
        yield return new WaitForSecondsRealtime(2f);
        SpawnBall();
       
    }
}

void SpawnBall()
{
    Instantiate(ball, new Vector3(Random.Range(-2.18f, 2.18f), 4.6f, 0f), Quaternion.identity);
}
 

Комментарии:

1. Относится ли это к Unity? Тогда, пожалуйста, отметьте свой вопрос соответствующим образом

2. Я не вижу никакого кода для меню в вашем фрагменте… В общем: либо set gameOver = true .. use StopCoroutine … отключите этот скрипт… уничтожьте его… существует так много возможных решений в зависимости от вашего варианта использования…..

Ответ №1:

Вы можете использовать StopCoroutine, как сказал Хьюго, но тогда я не вижу смысла даже проверять условие gameOver while. Действительно, я думаю, что это избыточно в любом случае:

Если бы вы установили gameOver значение true , вы бы эффективно остановили цикл while, поэтому шары должны перестать появляться. Но тогда вам все равно придется перезапускать сопрограмму, поскольку gameOver снова становится false , следовательно, полностью устраняется необходимость в while условии.