2016-09-17 3 views
0

У меня есть объект контроллера, который я прикрепляю к другим вспомогательным узлам в качестве слабых ссылок. Сценарий прослушивает события преобразования этих других узлов, а затем делает материал.Как узнать, когда объект сценария удален?

Проблема в том, что когда я удаляю объект контроллера, у меня нет возможности остановить слушателей WHEN.

  1. "on delete" clause срабатывает всякий раз, когда gc хочет в основном, часто раз только после закрытия max.
  2. событие nodePreDelete срабатывает в нужное время, но работает в глобальной области, и я не знаю, как найти экземпляр сценария, который мне действительно нужен
  3. «когда это удалено» ничего не делает, стоит того,

Между тем у меня не может быть преобразованных скриптов, работающих на сломанных объектах в фоновом режиме навсегда, это похоже на такую ​​простую концепцию, есть ли способ сделать это?

ответ

-1

Вы никогда не должны перечислять объекты по имени в контроллерах сценариев, если это то, что вы делаете. Вы должны создавать параметры и добавлять узлы напрямую.

Затем вы можете использовать isValidNode nodeParam и проверить, действительно ли это, прежде чем пытаться что-либо сделать с ним.

0

--- EDIT ---- Можете ли вы уточнить, что вы делаете, потому что после повторного чтения этого я не совсем понимаю, как вы обрабатываете свои уведомления; Я предположил, что вы используете контроллер сценариев, но похоже, что вы используете конструкцию when ... можете ли вы опубликовать фрагмент бит, вызывающий проблемы.

--- EDIT ----

Есть несколько способов справиться с этим в MAXScript. Ни один из которых не является чистым ...

Один из способов, который может по крайней мере спасти вас от спам-рассылки, заключается в том, чтобы обернуть код скрипта в try/catch. Ваш улов должен «нуля» скриптового контроллера, возможно, даже распечатать предупреждение для слушателя.

Будучи быстрым FYI, интерфейсы referenceTarget/referenceMaker, похоже, специально предназначены для работы с такими вещами. MAxscript, к сожалению, не реализует этого, AFAIK.

http://help.autodesk.com/view/3DSMAX/2017/ENU/?guid=__files_GUID_1395FB57_C374_4DDF_B3E1_56492DBC27A4_htm

+0

Практически все в макс является referenceTarget и, таким образом referenceMaker. Это сценарий в макс. Уведомления больше для обновлений пользовательского интерфейса. –

Смежные вопросы