Вопрос C# о: Сделайте…В то время как циклы (в единстве)

#loops #unity3d #crash

#петли #unity3d #авария

Вопрос:

  1. Почему MyInt увеличивается выше 1, в то while время как условие есть false ?
 public class HelloStackoverflow : MonoBehaviour {    int myInt = 0;  public bool myBool = false;    void Update () {    print(myInt);  do{  myInt  ;  }while(myBool == true);   } }  

-gt; Я ожидал, что gt; myInt достигнет 1 и не более, причина myBool никогда не устанавливается true . Я понял, что Do часть a Do...While выполняется по крайней мере один раз, прежде чем условие будет проверено, чтобы увидеть, должно ли оно зацикливаться или нет.

  1. Тогда почему один и тот же код вылетает, когда я устанавливаю myBool значение true в инспекторе? -gt; в то время как я думал, что gt; myInt достигнет 1 (Q1), а затем пойдет дальше, как только (и не раньше) myBool будет установлено значение true от инспектора.
  2. Почему я чувствую себя таким глупым только с этим Do...While основным?

пожалуйста, извините мой английский

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

1. Если бы это было правдой, unity рухнул бы 🙂 как бесконечные циклы обновления, так что это очень хорошо. Однако приведенный ниже ответ верен. Он будет увеличиваться с каждым кадром. Так что поднимется довольно быстро.

Ответ №1:

Update вызывается не один раз. (Каждый кадр, я думаю. Я сам новичок в Unity.) Каждый раз Update , когда вызывается, ваш do...while цикл выполняется один раз с увеличением myInt . Он выходит из строя (или перестает отвечать на запросы), когда вы устанавливаете myBool значение true, потому что он никогда не выходит из цикла.