2016-09-17 41 views
0

我有一個控制器對象,我將其他助手節點附加爲弱引用。該腳本收聽這些其他節點的變換事件,然後做東西..如何判斷腳本對象何時被刪除?

問題是,當我刪除控制器對象時,我無法停止WHEN監聽器。

  1. 「on delete」子句在gc基本上需要時觸發,通常只有在我關閉max後觸發。
  2. 在正確的時間nodePreDelete事件觸發,但運行在全球範圍內,我不知道如何找到我真正需要
  3. 「當這個刪除」不執行任何腳本實例,值得一試我猜

與此同時,我不能在後臺永久性地將在腳本中運行的腳本轉換爲腳本,它看起來像這樣一個簡單的概念,有沒有辦法做到這一點?

回答

-1

如果你正在做的事情你不應該在腳本控制器中按名稱列出對象。您應該創建參數並直接添加節點。

然後,您可以使用isValidNode nodeParam並在嘗試使用它之前檢查它是否有效。

0

---編輯---- 你能更準確地概述你在做什麼嗎?因爲在重讀這篇文章之後,我很不清楚你是如何處理你的通知的;我認爲你使用的是腳本控制器,但似乎你正在使用when構造......你能發佈一些引發問題的片段。

---編輯----

有幾種方法可以在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

在MAX幾乎一切是referenceTarget因而referenceMaker。這是最大的scenetree。通知更多用於UI更新。 –

相關問題