UnrealScript呼叫C++函式
UnrealScript不能直接存取C++的函式。不過可以在UnrealScript宣告native function,在C++實作,使得UnrealScript函式可以呼叫native function來使用C++函式。例如在Actor.uc檔內:
class Actor extends Object native ... native final function bool Move( vector Delta );當然前提是宣告這個native function所使用的型別UnrealScript也認得。UnrealScript不認識的型別(例如std::string)本來就無法在UnrealScript中使用,所以也不需要讓它可以被UnrealScript呼叫了。
C++呼叫UnrealScript函式
相反地,如果要讓C++能呼叫UnrealScript實作的函式,可以使用關鍵字event取代function宣告UnrealScript函式,這樣就會在自動生成的C++標頭檔內產生冠著event的同名函式。例如在Actor.uc檔內:
event PostBeginPlay();會在EngineClassees.h內的class AActor內,自動產生如下的函式定義:
void eventPostBeginPlay() { ... }所以在C++中就可以呼叫函式AActor::eventPostBeginPlay()來轉呼UnrealScript的Actor.PostBeginPlay()。
UnrealScript和C++互相呼叫
如果是想要寫可以被C++及UnrealScript呼叫的函式的話,native function或event都可以。只是差在一個是在C++中實作,一個是在UnrealScript中實作。
但是如果是class static function要可以被C++及UnrealScript呼叫的話,由於宣告在UnrealScript中的static native function在C++不是class static function的關係,所以只好用C++寫完class static function後,在UnrealScript中再宣告一個static native function去呼叫它。
沒有留言:
張貼留言