如何判断脚本对象何时被删除?

时间:2016-09-17 17:55:04

标签: maxscript

我有一个控制器对象,我将其他辅助节点作为弱引用附加。该脚本侦听那些其他节点的转换事件,然后执行操作..

问题是当我删除控制器对象时,我无法停止WHEN监听器。

  1. “on delete”子句在gc基本上需要时触发,通常只在我关闭max。
  2. 之后才会触发
  3. nodePreDelete事件在正确的时间触发但在全局范围内运行,我不知道如何找到我实际需要的脚本实例
  4. “当这个删除”没有做任何事情,值得一试,我猜
  5. 与此同时,我不能永久地在后台运行破坏对象的转换脚本,这似乎是一个简单的概念,有没有办法做到这一点?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:-1)

如果您正在执行此操作,则不应在脚本控制器中按名称列出对象。您应该创建参数并直接添加节点。

然后,您可以使用isValidNode nodeParam并在尝试对其执行任何操作之前检查它是否有效。