2013年6月9日 星期日

優化Kismet節點AttachToEvent

當在Kismet中設置事件節點時,會需要設定事件的發起者。對於事先放置在場景中的Actor,可以先選取Actor再建立事件,就會自動設定好發起者。然而對於動態產生的Actor,由於無法在編輯時直接參照,就會需要使用AttachToEvent節點來動態設定發起者。

這個節點會在每次觸發時產生事件複本掛到發起者的事件列表下,因為它可以將一個事件掛上多個發起者,如果不複製事件節點,多個發起者將共用同一個事件實例導致per instance data出錯。然而如果不曉得這個特性,將可能導致不必用的複製動作。實際上任何可能對同一個Actor重覆觸發的AttachToEvent都會導致重覆複製的事件實例,它們在條件成立時也會造成多重觸發,這通常不會是想要的結果。

接下來示範一下要怎麼修改AttachToEvent來避免重覆複製。我並不想去動引擎的原始碼,所以另外自訂一個事件叫BindEvent: