2012年6月30日 星期六

自訂Kismet條件節點

Kismet可以讓開發者透過圖形界面編排遊戲腳本,例如當玩家碰觸開關時把門打開,或是進入門口時播放過場動畫。Kismet的基本結構是以各種不同功能的節點連接構成,節點可分為事件、行動、條件、變數。除了UE內建的功能外,開發者也可自行擴充需要的節點。在此篇簡單說明一下如何自訂條件節點。

條件節點的基礎類別是SequenceCondition,重要的屬性有:
  • ObjName [string]:編輯器顯示的名稱。
  • ObjCategory [string]:編輯器選單的分類。在右鍵選單的New Condition的子選單裡會看到同名的分類選單。指定新的分類名稱會產生新的分類選單。 
雖然SequenceCondition是條件節點的基礎類別,實際上它並沒有為條件節點增加什麼功能,它的父類別SequenceOp就已經提供了條件節點所需的功能。子類別必須覆寫Activated函式或Activated事件來輸出訊號。前者是是C++虛擬函式,要有原始碼授權才能覆載。UDK使用者可以使用Activated事件。

範例


以下程式碼示範如何自訂一個可判斷是否為64位元版本的節點:
class MySeqCond_Is64Bit extends SequenceCondition
    native;
   
cpptext
{
    virtual void Activated()
    {
#if defined(_WIN64)
       OutputLinks(0).bHasImpulse = TRUE;
#else
       OutputLinks(1).bHasImpulse = TRUE;
#endif // _WIN64        
    }
}

defaultproperties
{
    ObjName="Is 64-bit"
   
    OutputLinks(0)=(LinkDesc="True")
    OutputLinks(1)=(LinkDesc="False")
}

沒有留言:

張貼留言