虛幻C++中的標(biāo)記宏
? ? 虛幻C++中的標(biāo)記宏,用于標(biāo)記從UObject派生的類,使得UObject處理系統(tǒng)能夠識(shí)別到他們,以實(shí)現(xiàn)垃圾回收(GC)、藍(lán)圖C++通信。用一句簡(jiǎn)單的話來宏觀概括虛幻C++中的標(biāo)記宏的作用那就是:使自己寫的與虛幻引擎無縫銜接。
?

幾個(gè)典型的標(biāo)記宏:(例如我們的項(xiàng)目名稱為MyProject,在該項(xiàng)目中創(chuàng)建一個(gè)繼承自UObject名為UMyObject的類)
1.#include” MyObject (自己創(chuàng)建的類的頭文件名稱).generated”
我們?cè)谔摶靡嬷袆?chuàng)建任何一個(gè)類,系統(tǒng)會(huì)為我們自動(dòng)生成一個(gè)頭文件,擁有這個(gè)頭文件即意味著加入了反射系統(tǒng)。需要注意的是這個(gè)頭文件必須是最后一個(gè)被引入的頭文件,因?yàn)榇祟^文件需要了解其他類,所以放到最后。
?

2.UCLASS(描述指令,描述指令,…)
使虛幻引擎能識(shí)別自己創(chuàng)建的類(UMyObject)
?

3.class MYPROJECT_API UMyObject : public UObject
MYPROJECT_API將UMyObject類公開到其他模塊
?

4.GENERATED_BODY()
該宏不獲取參數(shù),但會(huì)對(duì)類進(jìn)行設(shè)置,以支持引擎要求的基礎(chǔ)架構(gòu),該宏將成員訪問等級(jí)設(shè)為”public”
?

5.UFUNCTION(指令,指令,…)
用于標(biāo)記函數(shù)
幾個(gè)常用指令:
BlueprintCallable,該函數(shù)可以在藍(lán)圖中調(diào)用
BlueprintNativeEvent,此函數(shù)可在藍(lán)圖中重寫,若藍(lán)圖重寫則函數(shù)實(shí)現(xiàn)在藍(lán)圖中,若沒有重寫,則函數(shù)實(shí)現(xiàn)在(函數(shù)名_Implementation)上。
BlueprintPure,構(gòu)建一個(gè)獲取對(duì)象數(shù)據(jù)的純函數(shù),所以被標(biāo)記函數(shù)一定要有有效返回值。藍(lán)圖純函數(shù)不在執(zhí)行隊(duì)列中,只能傳遞數(shù)據(jù)。
Category,此函數(shù)在藍(lán)圖中分類
…
?

6.UPROPERTY(指令,指令,…)
用于標(biāo)記對(duì)象,如果希望變量可以在藍(lán)圖中被操作,則應(yīng)該放入公有域或保護(hù)域,不能放在私有域。
幾個(gè)常用指令:
BlueprintReadOnly,該屬性在藍(lán)圖中只讀
BlueprintReadWrite,藍(lán)圖中可讀可寫
EditAnywhere,在引擎編輯器窗口和細(xì)節(jié)面板中均可編輯
EditDefaultsOnly,在引擎編輯器窗口可以編輯,但細(xì)節(jié)面板中不可編輯
VisibleAnywhere,屬性窗口可見,但不可編輯
VisibleDefaultsOnly,只能在原型藍(lán)圖編輯器屬性窗口中見,不可編輯
Category,變量在藍(lán)圖中分類
meta,元數(shù)據(jù)說明符,說明標(biāo)記的函數(shù)或?qū)ο笈c虛幻引擎的各種關(guān)系
使我們可以對(duì)函數(shù)或?qū)傩赃M(jìn)行別名操作
…

(完)
留下個(gè)贊唄~