以下內容,如果已經有例項指標,都推薦使用getclass()來獲取到其所屬uclass。getobjectsofclass(型別::getstaticclass(),儲存結果的陣列);staticclass()只能獲取當前指標型別的uclass,getclass()可以獲取到其最頂層的uclass
!!!強烈推薦getclass()代替staticclass()
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 ...