Если?
Если, если, если. Если я сделаю это… если я сделаю то… Что произойдет если… Конечно, вы использовали слово «если» в предложении, или в мыслях, в своей повседневной деятельности. Более чем вероятно, что несколько сотен раз за день. Значит, вы уже знаете, как использовать слово «если». Довольно много способов того, как вы принимаете решения.
Выражения if, true или false
Игрок нажал кнопку. Дверь закрылась. Персонаж погиб. 7 > 6 (7 больше, чем 6)
Основные выражения, такие, как выше, это либо true (истина) либо false (ложь). Например: «Медведь сходил на горшочек в лесу» — это либо true, или false — «Медведь не сходил на горшочек в лесу».
Когда оператор if вступает в действие? Давайте посмотрим на два примера, написанные так, как если бы они появились в скрипте:
Условия
Я создал новый скрипт Unity (JavaScript) «ifStatements.js» и прикрепил его к пустому игровому объекту в сцене.
- Напишите if, затем поместите оператор, который будет иметь значение true или false в круглые скобки, далее код, который мы хотим выполнить в фигурные скобки.
Операторы, которые мы поместили в круглые скобки, и которые мы проверяем на true или false, называются условиями. Поэтому оператор if выражает:
Если мои условия выполняются, тогда выполнить код, из которого следует, что
В данном случае, выражение 7 > 6 всегда имеет значение true, поэтому «Yes» отобразится на консоли.
Примечание:
Unity предупредит вас о том, что выражение всегда имеет значение true. Я не забочусь об этом, поскольку этот пример — всего лишь для демонстрационных целей, и он работает. Причина, по которой выражение всегда равно true в том, что 7 и 6 являются константами, а не переменными. Они никогда не могут измениться. 7 всегда будет равна 7.
Проверка значения «true»
Тогда как мне проверить, например, такое условие «медведь сходил на горшочек в лесу»?
Оно должно быть записано таким образом, чтобы его можно было бы проверить, является ли оно true или false. Мы будем использовать логические значения типа boolean на данный момент (ссылка).
Я использую тип переменной boolean потому что этот тип может принимать значения только true и false.
- Итак, давайте создадим переменную с именем theBearMadeBigPottyInTheWoods. Конечно же, я мог бы использовать короткое имя, но поспорю, что это вы запомните лучше.
- Я определил тип переменной как boolean.
- Я назначил переменной значение true.
- Я создал оператор if с переменной в круглых скобках.
Конечно, в данном примере, мы уже знаем, что условие будет выполнено, поскольку переменной было назначено значение true.
- В результате надпись «It’s stinky, too» появится на консоли, когда я нажму play.
В качестве «освежителя воздуха», имя переменной — это просто имя-заменитель для значения, которое оно сохраняет, поэтому, в любом месте, где переменная theBearMadeBigPottyInTheWoods будет задействована в скрипте, то она заменится значением true. Это означает то, что условия оператора if выполнены, поэтому он выполнит код и вызовет функцию Debug.Log().
Если бы переменной theBearMadeBigPottyInTheWoods было назначено значение false, тогда условие не было бы выполнено, следовательно, функция Debug.Log() не была бы вызвана.
Проверка на «нет»?
Проверка на «нет»? Да. Все это становится похожим на обман, но в этом конкретном примере мы собираемся превратить значение false в значение true, так чтобы оператор if выполнился.
- Обратите внимание, что я изменил значение переменной на false. Я сделал это для того, чтобы медведь стал полярным медведем и не сходил бы на горшочек в лесу.
Благодаря небольшой возвратной логике, оператор if все-таки выполнится.
- Посмотрите очень внимательно на начало переменной theBearMadeBigPottyInTheWoods между круглыми скобками. Там находится восклицательный знак перед переменной.
И что же он делает?
Этот знак устанавливает отрицательное логическое значение.
Постарайтесь задержаться здесь со мной. Этот знак указывает на то, что значение в переменной theBearMadeBigPottyInTheWoods логически противоположное.
Значение, содержащееся в переменной theBearMadeBigPottyInTheWoods равно значению false.
Следовательно, запись гласит, что переменная theBearMadeBigPottyInTheWoods имеет противоположное значение, т.е. противоположное значение false.
Если значение не равно false, то это все равно, что сказать, что оно равно значению true.
Поэтому, здесь будет выполнено условие оператора if и вывод на консоль будет «it’s on the ice».
Переменные не должны иметь тип boolean для работы
А как насчет множественного условия?
У вас может быть множество условий, при желании, которые могут быть выполнены перед выполнением оператора if. Вы можете совмещать несколько условий, проверяемых при помощи двух символов амперсанда, &&, которые означают логическое AND.
Это означает то, что все условия должны иметь значение true для выполнения оператора if.
Множественные условия, но только одно должно иметь значение true
Вот я сделал одно условие со значением false, 6 > 7. Я также сделал два знака вертикальных линий, ||, между условиями , которые будут проверяться. Этот знак означает логическое OR.
В данном примере только одно условие должно иметь значение true для выполнения оператора if, 6 > 7 OR theBearMadeBigPottyInTheWoods.
В этом примере выражение 6 > 7 равно значению false, а переменная theBearMadeBigPottyInTheWoods равна значению true.
Дополнительный код на выполнение
Операторы if , которые я указал, выполняют код только, если выполняются условия. Теперь мы видим, что есть возможность выполнить некоторый альтернативный код при невыполнении условий.
Оператор if-else
- Переменной назначено значение false
- Это основная часть оператора if
- else добавляется вместе со своим собственным кодом для выполнения между фигурными скобками.
Все очень просто. Поскольку значение переменной равно false, то условия оператора if не выполняются, поэтому вместо этого выполняется код, расположенный в выражении else.
Вот то, что выражает оператор if:
Если условия выполнены, то выполнить код, который следует далее, иначе выполнить альтернативный код.
А как насчет более двух вариантов?
Когда необходимо будет сделать один выбор из нескольких, то вы обнаружите, что имеется множество ситуаций, при которых может быть более чем один или два возможных результата. Это легко сделать просто, вставив еще один оператор if-else в код с выражением else предыдущего оператора if-else.
Это называется «вложением».
if-else-if-else…
Вы можете вложить операторы if-else настолько глубоко, насколько вам это нужно, а условия для каждого оператора if могут быть какими угодно, какие только вам необходимы.
- Первый if
- Первый else
- Второй if
Обратите внимание, что второй оператор if находится в коде первого оператора else (пункт 2)
- Второй else
В данном примере, итоговый результат на консоль будет следующим: «The polar bear goes in the ocean» потому что условия в обоих операторах if не выполняются, они оба имеют значение false. Почему? Потому что обеим переменным theBearMadeBigPottyInTheWoods и thePolarBearMadeBigPottyOnTheIce назначены значения false.
Примечание:
- Я убрал переменные из функции Start(). Я сделал это для того, чтобы они стали общедоступными переменными и отображались в окне Inspector. Это позволит вам изменять их значения, true и false, чтобы увидеть различные результаты на консоли без необходимости изменять скрипт.
Переменные, отличные от типа boolean
Все примеры, которые я привел, используют переменные типа boolean, и их значение может быть true или false. Довольно легко убедиться, что оператор if был проверен на условие true или false.
Любой тип переменной может быть использован в операторе if, все, что нам нужно сделать — это сформулировать оператор условия так, чтобы ответ был со значением true или false. Как это сделать?
Вы когда-нибудь задавали человеку вопрос, на который могли бы получить ответ «да» или «нет»? Конечно, задавали. Это именно то, что нам нужно сделать здесь.
Знак равенства «==»
- Я создал еще одну переменную с именем theSeasonOfTheYear и назначил ей строковое значение «summer».
- Я создал новый оператор if с использованием переменной theSeasonOfTheYear.
- Обратите внимание, что я использовал два знака равенства. Вы можете прочитать эту запись как «равен» в коде скрипта.
Так как именно запись theSeasonOfTheYear == «summer» создала условие со значением true для оператора if? Давайте начнем с более легкого примера:
6==6
Эта запись выражает, что 6 равно 6. Вы бы сказали, что это выражение равно значению true? Конечно. А что насчет вот этого:
«summer» == «summer»
Я бы сказал, что это выражение также равно значению true, а вы? Хорошо, и так какое же значение содержится в переменной theSeasonOfTheYear? В соответствии с пунктом 1 в коде, я написал «summer», следовательно, запись
theSeasonOfTheYear == «summer»
также имеет значение true, которое именно то, которое было необходимо для оператора if, чтобы выполнить свой код.
Таким образом, любой тип переменной может быть использован как часть условия пока значения с обеих сторон знака равенства (==) являются, фактически, равными друг другу.
Примечание:
Переменная theSeasonOfTheYear также будет отображена в окне Inspector. Если вы измените значение на другое, кроме «summer», то условия оператора if не будут выполнены. В результате, никакой код не будет выполнен, а ничего не отобразится на консоли. Почему?
Потому что пункт 2 является только оператором if, а не оператором if-else. Нет никакого другого альтернативного кода для выполнения.
Еще одно примечание:
Весь пример — довольно простой код, но как видите, когда вы начинаете помещать друг в друга хотя бы несколько операторов if, то он может стать сложным для визуального восприятия, даже если он и очень простой. Я не стал использовать никакие комментарии в файлах скрипта, потому что они бы увеличили размер моих примеров. Когда вы начинаете создавать свои собственные скрипты, пользуйтесь комментариями с щедростью для того, чтобы при просмотре на них позже, вы бы не чесали голову, удивляясь что же это вы пытались сделать.
Источник: httpssss://bim.wikispaces.com/file/view/UnityScript_Basics_for_Noobs.pdf
Смотрите также:
Unity3D: Основы использования скриптов для новичков: Преимущественно для новичков
Unity3D: Основы использования скриптов для новичков: Преимущественно для новичков
Unity3D: Основы использования скриптов для новичков: Подробнее о переменных
Unity3D: Основы использования скриптов для новичков: Подробнее о функциях
Unity3D: Основы использования скриптов для новичков: Синтаксис точки: взаимодействие компонентов
Unity3D: Основы использования скриптов для новичков: Назначение при помощи инспектора