завершите сопрограмму и запустите новую, если она уже запущена

#c# #unity3d

#c# #unity3d

Вопрос:

создание программы Unity3D с помощью C # Я совершенно новичок в Unity и C #.

Вот код,

 void Update() {
    //do something with bool unit and eventually it gets to true
    if (Input.GetKeyDown (KeyCode.A)) {
        if (coRunning == true) {
            StopCoroutine ("Coroutine");
            coRunning = false;
        }
        StartCoroutine ("Coroutine");
    }
}

public IEnumerator Coroutine() {
    coRunning = true;
    while (!unit) {
        yield return null;
    }
    GetComponent<Rigidbody> ().transform.Rotate (0, 90, 0);
    coRunning = false;
}
  

Когда нажата клавиша ‘A’, следует подождать, пока значение bool ‘unit’ не станет истинным, прежде чем поворачивать корпус на 90 градусов. Если unit не получает значение true до нажатия другого ‘A’, исходную сопрограмму следует остановить и запустить новую.

Однако, когда я нажимаю «A» два раза, корпус сразу поворачивается на 180 градусов, когда unit становится true. Любая помощь в решении этой проблемы?

Заранее спасибо,

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

1. все 2-е действие if после нажатия клавиши останавливает сопрограмму. она должна мгновенно сработать, как только вы поместите StartCoroutine во 2-й ifs else. если она не запущена, запустите ее, если она запущена, остановите ее. продумайте это построчно, запишите значения переменных, если это необходимо.

2. @ спасибо за помощь, но, возможно, вы неправильно поняли мой вопрос. Но теперь это решено, возможно, я не сохранил сценарий после изменения!