UE4 C 利用反射獲取到類 類的成員

2021-10-04 10:52:49 字數 3426 閱讀 7915

以下內容,如果已經有例項指標,都推薦使用getclass()來獲取到其所屬uclass。

staticclass()只能獲取當前指標型別的uclass,getclass()可以獲取到其最頂層的uclass

!!!強烈推薦getclass()代替staticclass()

getobjectsofclass(型別::getstaticclass(),儲存結果的陣列);

tarray

<

uobject

*>

objs

;getobjectsofclass

(uclass

::staticclass()

,objs);

tarray

<

uobject

*>

actorobjs

;getobjectsofclass

(aactor

::staticclass()

,actorobjs);

tarray

<

uobject

*>

structobjs

;getobjectsofclass

(uscriptstruct

::staticclass()

,structobjs);

tarray

<

uobject

*>

enumobjs

;getobjectsofclass

(uenum

::staticclass()

,enumobjs);

//這裡是imyinte***ce對應的umyinte***ce

tarray

<

uobject

*>

inte***ces

;getobjectsofclass

(umyinte***ce

::staticclass()

,inte***ces

);

通過名字就可以查詢

findobject(要搜尋的區域,類名);

uclass

*actorref

=findobject

<

uclass

>

(any_package,

*fstring

("aactor"))

;//獲取到uenum

uenum

*enumptr

=findobject

<

uenum

>((

uobject

*)any_package,

*fstring

("emyenum"),

true);

enumptr

->

getenumname

((int32)0)

);//獲取到第0個列舉的名字

僅支援aactor子類

tarray

<

aactor

*>

actors

;ugameplaystatics

::getallactorsofclass

(getworld()

,amyactor

::staticclass()

,actors

);

2023年08月18日更新:ue4.26補充

for

(tfielditerator

<

fproperty

>

it(getclass()

);it;

++it)

}

以下是原內容

mystruct

ustruct

(blueprintable

)struct fmystruct

;

獲取mystruct中名為"floatvalue"的值並修改
for

(tfielditerator

<

uproperty

>

it(mystruct.staticstruct()

);it;

++it)

}//使用ue4的text匯入匯出實現變數的賦值與傳遞

if(it->

getname()

=="strvalue")}

}

獲取到uobject的子類型別變數並賦值到c++變數中

第一步:獲取到所屬類相應的uclass

第二步:通過變數名尋找uclass的對應屬性

第三步:將找到的屬性轉換為對應的object*指標

//繫結anim到animref(anim為c++成員變數,animref為藍圖成員變數,兩者皆為uwidgetanimtion)

//getclass可以獲取到頂層的類的uclass,而不是當前c++類的uclass,建議不使用staticclassif(

uobjectproperty

*animref

=cast

<

uobjectproperty

>

(getclass()

->

findpropertybyname

(fname

("animref"))

))}

for

(tfielditerator

<

ufunction

> i(

amyactor

::staticclass()

);i;

++i)

}}

for

(int i=

amyactor

::staticclass()

->

inte***ces.num()

;i;--i)

//注意:這裡是umyinte***ce而不是imyinte***ce

aactor

::staticclass()

->

implementsinte***ce

(umyinte***ce

::staticclass()

);

UE4 C 的const類成員函式

我們知道,在c 中,若乙個變數宣告為const型別,則試圖修改該變數的值的操作都被視編譯錯誤。例如 const char blank blank n 錯誤 要宣告乙個const型別的類成員函式,只需要在成員函式引數列表後加上關鍵字const,例如 pragma once include includ...

利用反射獲取類的所有字段

以下是利用反射獲取類refpoint中所有的字段。一,refpoint類 public class refpoint public class class02 二,列印出所有類refpoint中的所有字段 refpoint refpoint01 new refpoint 3 type typeobj...

C 利用反射編寫的SqlHelper類

以下是學習筆記 1,常用的查詢方法 例如 根據id查詢學生資訊 根據id查詢物件 查詢的物件 物件id public students find int id using 使用完會自動釋放 using sqlconnection conn new sqlconnection connstsring ...