Глобальные переменные

Определение переменных

При обработке сценариев в 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 и другие однобуквенные переменные, вряд ли будут вступать в конфликт с глобальными переменными из других выполняемых сценариев. Тем не менее, если сценарий предполагается использовать часто или же распространять среди других пользователей, во избежание конфликтов рекомендуется применять, в основном, локальные переменные.