Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MAXScript help rus.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.24 Mб
Скачать

Настойчивые переменные

Именно так “настойчивый”, переводится с английского слово persistent. Более подробный словарь дает, правда, перевод “постоянный”, но “постоянные переменные” звучит диковато. Настойчивость их заключается в том, что глобальные переменные, объявленные со словом persistent, запоминаются при сохранении сцены в файл и восстанавливаются при открытии этого файла. Впрочем, отделаться от этих настырных объектов не трудно, достаточно выполнить скрипт

persistents.remove <имя переменной>

При этом сама переменная никуда не девается, просто перестает быть настойчивой. А если вы хотите, чтобы все настойчивые переменные перестали быть таковыми, достаточно выполнить

persistents.removeAll()

Если же Вас интересует список всех настойчивых переменных, то к Вашим услугам функция

persistents.show()

Разберем такой скрипт

persistents.removeAll()

persistent global a=10,b=20,c=30

persistents.show()

persistents.remove #a

persistents.show()

persistents.removeAll()

persistents.show()

print a

print b

print c

Первый оператор удаляет все ранее созданные настойчивые переменные. Второй объявляет таковыми три переменных – a, b и c. Третий выводит список всех настойчивых переменных, в нем должно быть три упомянутых элемента. Четвертый оператор удаляет из списка переменную a. Знак # перед именем переменной не случаен, без него ничего не получится. Что он означает, разберем позднее, когда речь пойдет об именах переменных. Далее снова выводится список настойчивых переменных, чтобы убедиться, что a в нем отсутствует. Затем удаляем из списка настойчивых все переменные, и убеждаемся, что этот список пуст. После этого на экран выводятся все переменные, чтобы убедится, что их значения остались в целости и сохранности.

У настойчивых переменных есть одна тонкость. Рассмотрим следующий скрипт.

persistent global b,sm

b = box()

sm = standard()

Вкратце он делает следующее – создает коробочку b и стандартный материал sm. Теперь выполним его и сохраним сцену. После того, как мы перезапустили 3ds max и загрузили сохраненную сцену, то по свойствам настойчивых переменных логично было бы ожидать, что значения b и sm сохранились, но это не совсем так. Сохранилось значение только b, а sm будет иметь значение undefined. Слегка дополним скрипт

persistent global b,sm

b = box()

sm = standard()

b.material = sm

Вот теперь все будет работать правильно. Вся разница в последней строке, где материал sm применяется к коробочке b. Иными словами, если настойчивая переменная содержит объект 3ds max, но этот объект не содержится непосредственно в сцене, то значение такой переменной не сохраняется и, соответственно, не восстанавливается. В первом случае переменная sm содержала материал, который не использовался ни одним объектом сцены, ее значение и не сохранилось. Во втором случае этот материал использовался коробочкой b, и результат не замедлил проявиться.

Изменяемый тип переменных

MAXScript обладает следующей особенностью. Если в других языках каждая переменная объявляется явно или неявно, как переменная некого фиксированного типа, например, целого или текстового, то здесь каждая переменная может изменять свой тип во время выполнения программы. Например:

x = 4.5 -- сейчас x – вещественное число

x = “Hello, world” -- а сейчас – строка

Более того, элементы одного и того же массива так же могут иметь разный тип.

a[1] = 12

a[2] = 13.5

a[3] = “Character Line”

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]