2012年4月28日 星期六

自訂Kismet行動

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

行動節點的基礎類別是SequenceAction,重要的屬性有:
  • ObjName [string]:編輯器顯示的名稱。
  • ObjCategory [string]:編輯器選單的分類名稱。在右鍵選單的New Action的子選單裡會看到同名的分類選單。指定新的分類名稱會產生新的分類選單。
  • HandlerName [name]:當此節點啟動時,呼叫指定名稱的UnrealScript函式。指定的函式要寫在節點作用的Actor類別上或操作該Actor的Controller類別上,而不是在節點類別上。若沒有指名,則以節點類別名稱自動產生,例如SeqAct_XXX會呼叫OnXXX函式。

範例


以下程式碼示範如何自訂一個跳躍節點:
class MySeqAct_Jump extends SequenceAction;

defaultproperties
{
    ObjName="Jump"
    ObjCategory="Pawn"
}
因為沒有指定HandlerName,節點啟動時按照規則會呼叫前綴On的同名函式,所以會呼叫OnJump()。在專案自訂的Pawn類別上加入以下函式即可:
function OnJump(MySeqAct_Jump Action)
{
    DoJump(true);
}
測試用的Kismet

沒有留言:

張貼留言