Условные операторы позволяют нам управлять потоком выполнения нашей программы. Если бы операторы кода выполнялись только один за другим до конца функции, функциональность была бы очень ограниченной.
Когда-то давно были популярны диаграммы потока (может быть, они все еще актуальны?), где мы могли проектировать поток нашей программы с помощью узлов принятия решений для определения ветвления. Обычно мы проверяли условие на истинность или ложность и выбирали соответствующую ветку.
В игре мы, вероятно, будем иметь простые условия истинности/ложности или более сложное состояние с несколькими возможностями.
Основной условный оператор использует синтаксис if / else / elif. Мы используем отступы для определения уровней вложенности в структуре if. Вот несколько примеров кода на GDScript:
Проверь свои знания в нашем бесплатном ТЕСТЕ по GDScript! Узнай, насколько хорошо ты его знаешь!
extends Node2D
func _ready():
var n = 6
# Inline 'if' statement
if n == 6: print("n is equal to six")
n = 4
# Regular 'if' statement
if n == 4:
print("n is equal to four")
# 'else/if' statement
if n == 6:
print("n is equal to six")
else:
print("n is not equal to six")
# Messy indented 'else/if' statement
if n == 6:
print("n is equal to six")
else:
if n < 6:
print("n is less than six")
else:
print("n is greater than six")
n = 8
# Tidier 'else/if' statement using 'elif'
if n == 6:
print("n is equal to six")
elif n < 6:
print("n is less than six")
else:
print("n is greater than six")
В представленном коде вы видите, как отступы могут стать запутанными, когда есть более одного теста в операторе if, поэтому для упорядочивания кода можно использовать elif.
Оператор Match
В других языках программирования обычно предоставляется оператор switch, позволяющий условному ветвлению на основе нескольких случаев тестового значения. GDScript предоставляет мощный альтернативный оператор Match.
Тернарный if
Это удобное однострочное выражение для присвоения значения переменной в зависимости от условия.
var x = [значение] if [выражение] else [значение]
var paid = false
var strength = 9.9 if paid else 1.0
print("Strength = ", strength)