#loops #unity3d #crash
#петли #unity3d #авария
Вопрос:
- Почему
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
выполняется по крайней мере один раз, прежде чем условие будет проверено, чтобы увидеть, должно ли оно зацикливаться или нет.
- Тогда почему один и тот же код вылетает, когда я устанавливаю
myBool
значение true в инспекторе? -gt; в то время как я думал, что gt;myInt
достигнет 1 (Q1), а затем пойдет дальше, как только (и не раньше)myBool
будет установлено значениеtrue
от инспектора. - Почему я чувствую себя таким глупым только с этим
Do...While
основным?
пожалуйста, извините мой английский
Комментарии:
1. Если бы это было правдой, unity рухнул бы 🙂 как бесконечные циклы обновления, так что это очень хорошо. Однако приведенный ниже ответ верен. Он будет увеличиваться с каждым кадром. Так что поднимется довольно быстро.
Ответ №1:
Update
вызывается не один раз. (Каждый кадр, я думаю. Я сам новичок в Unity.) Каждый раз Update
, когда вызывается, ваш do...while
цикл выполняется один раз с увеличением myInt
. Он выходит из строя (или перестает отвечать на запросы), когда вы устанавливаете myBool
значение true, потому что он никогда не выходит из цикла.