2013年7月29日 星期一

自訂UnrealScript指令

UDN花了許多篇幅解釋UnrealScript底層的運作,不過卻沒提如何自訂新的指令。本篇將透過一個簡單的範例說明如何擴充UnrealScript的指令。

UnrealScript並未提供擴充機制,讓開發者可以在自己的專案裡撰寫程式碼自訂新的指令。雖然增加擴充機制不會太難,主要是讓FScriptCompiler和UByteCodeSerializer可以subclassing,不過由於不是這次的主題,所以本例中就直接修改底層的程式碼。

要自訂新的指令,大致上需要以下的步驟:
  • 找一個還未使用的位元碼(byte code)當作自訂指令碼
  • 如果這個指令需要使用一個新的名稱,可以在UnNames.h註冊一個新的名字
  • 修改UByteCodeSerializer使得新增的指令可以正確地序列化。
  • 撰寫對應的函式並且註冊到GNatives
  • 修改FScriptCompiler讓編譯器認得新的指令