Глобальные переменные
Определение переменных
При обработке сценариев в 3dsMax никаких прогнозов не делается. В приведенных ниже упражнениях показано, что переменной нельзя воспользоваться до тех пор, пока она не будет определена.
Для того чтобы правильно определить переменную, выполните следующее упражнение.
1. Установите 3dsMax в исходное состояние.
2. Откройте новое окно редактора MAXScript Editor по команде MAXScript ⇨ NewScript из меню этого окна.
3. Введите в окне редактора сценариев следующий фрагмент кода, а затем выполните его, нажав комбинацию клавиш <Ctrl+E>:
rad = 10
sphere radius: rad cylinder radius: rad
Данный код выполняется без ошибок, поскольку переменные определены в правильном порядке.
4. А теперь вам предстоит создать код, объявляющий переменные в неверном порядке. Замените существующий сценарий приведенным ниже и выполните его:
cylinder radius: new_rad
new_rad = 10.0
Переменная new_rad отсутствует вплоть до первого ее определения. В данном случае возникает ошибка, поскольку в первой строке сценария присутствует неизвестная переменная new_rad.
5. Выполните сценарий еще раз.
На этот раз ошибка не возникает. В первый раз ошибка возникла в первой строке сценария, хотя вторая его строка была все равно выполнена и в итоге, переменной new_rad было присвоено значение 10. С этого момента переменная new_rad стала доступной и действительной на момент выполнения сценария во второй раз.
Это типичное затруднение, с которым сталкиваются многие начинающие создатели сценариев. При появлении ошибок в сценарии проанализируйте его на предмет объявления переменных в правильном порядке.
Глобальная переменная представляет собой любую переменную, объявленную или определенную вне всех блоков кода. В предыдущем упражнении все переменные были глобальными, поскольку они не были объявлены внутри цикла for или while, оператора функции или же другого блока кода.
Примечание. Циклические конструкции рассматриваются далее в этой главе.
Основы MAXScript
Глобальную переменную можно также объявить явно. Ниже приведены примеры правильного объявления глобальной переменной:
global a
global a = 2
a = 2 -- если переменная определена внутри сценария, но не блока
В целом, применения глобальных переменных следует избегать. Ведь если объявить глобальную переменную в сценарии, который может быть использован в каком-нибудь другом месте 3dsMax, а затем перезаписать значение такой переменной, то другие сценарии или подключаемые модули могут работать не вполне предсказуемым образом. В некоторых примерах, приведенных в данной книге, глобальные переменные все же используются, однако такие переменные, как a, b, x, y и другие однобуквенные переменные, вряд ли будут вступать в конфликт с глобальными переменными из других выполняемых сценариев. Тем не менее, если сценарий предполагается использовать часто или же распространять среди других пользователей, во избежание конфликтов рекомендуется применять, в основном, локальные переменные.