UE4入門 常見的巨集 UCLASS

2021-08-10 20:36:42 字數 3432 閱讀 7080

uclass 巨集為 uobject 提供乙個對 uclass 的引用,描述其基於虛幻引擎的型別。每個 uclass 保留乙個稱作「類預設物件(class default object)」的物件,簡稱 cdo。cdo 本質上是乙個預設「模板」物件,由類構建函式生成,之後並未進行修改。uclass 和 cdo 均可為特定物件例項恢復,但它們通常為唯讀。使用 getclass() 函式即可隨時訪問物件例項的 uclass

uclass 包含定義類的一套屬性和函式。這些是本地**可用的普通 c++ 函式和變數,但被虛幻引擎特有的元資料所標記,它們在物件系統中的行為也因此受到控制

需要注意 uobject 類還可包括僅限本地的屬性,這些屬性不存在於相應的 uclass 中

虛幻引擎中每個遊戲類由乙個類標頭檔案.h和乙個類原始檔.cpp構成。類頭包含類和類成員(如變數和函式)的宣告,而在類原始檔中通過實現屬於類的函式來定義類的功能

遊戲性類的類標頭檔案使用標準c++語法,並結合專門的巨集,以簡化類、變數和函式的宣告過程

在每個遊戲性類標頭檔案的頂端,需要包含生成的標頭檔案(自動建立),因此在classname.h的頂端不許出現#include "classname.generated.h"

類宣告定義類的名稱、其繼承的類,以及其繼承的函式和變數。類宣告還將定義通過 類說明符 和 元資料 要求的其他引擎和編輯器特定行為

類宣告的語法如下所示

uclass([specifier, specifier, ...], [meta(key=value, key=value, ...)])

class classname : public parentname

宣告包含乙個類的標準c++類宣告。在標準宣告之上,描述符(如類說明符合元資料)將被傳遞到uclass巨集。它們用於建立被宣告類的uclass,它可被看作引擎對類的專有表達。此外,generated_body()巨集必須被放置在類體的最前方

在宣告類時,宣告上可新增修飾符以控制引擎和編輯器的不同方面的類表現

hidedropdown

防止在虛幻編輯器屬性視窗組合框中顯示此類

hidefunctions=(category1, category2, …)/ showfunctions=(category1, category2, …)

hidefunctions=functionname**/ showfunctions**=functionname

intrinsic

這表明這個類是直接用c ++宣告的,並且沒有虛幻標頭檔案工具生成的樣板檔案。不要在新類上使用這個說明符

minimalapi

僅導致要匯出的類的型別資訊供其他模組使用。類可以被強制轉換, 但不能呼叫類的函式 (內聯方法除外)。這提高了編譯時間, 因為不為不需要在其他模組中訪問所有函式的類匯出所有內容

noexport

表示此類的宣告不應包含在由標頭生成器自動生成的 c++ 標頭檔案中。必須在單獨的標頭檔案中手動定義 c++ 類宣告。僅對本機類有效。不要將此用於新類

placeable / notplaceable

表示可以在編輯器中建立此類, 並將其置於關卡、ui 場景或藍圖中 (具體取決於類型別)。此標誌將傳播到所有子類;子類可以使用 notplaceable 說明符來重寫此標誌

transient / nontransientwithin=outerclassname

這個類的物件不能存在於乙個outerclassname物件的例項之外。這意味著建立這個類的object需要提供乙個outerclassname的例項作為其外部物件

對元資料修飾符的使用按常規類、函式和介面修飾符而不同

deprecatednode

對於行為樹節點, 指示該類已棄用, 並在編譯時顯示警告

deprecationmessage=」message text」

如果該類被棄用, 則在嘗試編譯使用它的藍圖時, 此訊息將被新增到標準棄警告中

displayname=」blueprint node name」

藍圖中此節點的名稱將替換為此處提供的值, 而不是**生成的名稱

dontusegenericspaenobject

不要在藍圖中使用泛型建立物件節點生成類的物件。此說明符僅對既非參與者也不 actorcomponents 的 bluprinttype 類是有意義的

exposedasyncproxy

在非同步任務節點中公開此類的**物件

ignorecategorykeywordsinsubclasses

用於使類的第乙個子類忽略所有繼承的 showcategories 和 hidecategories 說明符

isblueprintbase=」true / false」

宣告此類是 (或不是) 用於建立藍圖的可接受基類, 類似於 uclass 說明符、blueprintable 或 「notblueprintable」

kismethideoverrides=」event1, event2, …」

不允許重寫的藍圖事件列表

prohibitedinte***ces=」inte***ce1, inte***ce2, …」

列出與類不相容的介面

restrictedtoclasses=」class1, class2, …」

由藍圖函式庫類使用, 用於限制列表中命名的類的用法

shorttooltip

在某些上下文中使用的簡短工具提示, 其中完整的工具提示可能是壓倒性的, 如父類選擇器對話方塊

tooltip

重寫**注釋中自動生成的工具提示

showworldcontextpin

表示放置在此類所擁有的關係圖中的藍圖節點必須顯示它們的世界上下文針腳, 即使它們通常是隱藏的, 因為此類的物件不能用作世界上下文

useshierarchy

表示類使用分層資料。用於例項化詳細資訊面板中的分層編輯功能

UE4委託入門

ue4在delegatecombinations.h定義了各種型別的委託給我們使用。主要型別有 單播委託 多播委託 動態委託 可返回值委託 不同型別委託有的也可以組合出現。指的是只能繫結乙個函式的委託,函式名字中不含multicast。declare delegate oneparam單引數委託 d...

UE4入門與精通

ue4 自定義物理表面型別 su ce type ue4 效能優化方法 工具篇 ue4 減少apk包的大小 ue4中使用資料表 data table 虛幻4藍圖快速入門 一 虛幻4藍圖快速入門 二 虛幻4藍圖快速入門 三 虛幻4藍圖快速入門 四 虛幻4屬性系統 反射 翻譯 深入研究虛幻4反射系統實現...

UE4入門與精通

ue4 自定義物理表面型別 su ce type ue4 效能優化方法 工具篇 ue4 減少apk包的大小 ue4中使用資料表 data table 虛幻4藍圖快速入門 一 虛幻4藍圖快速入門 二 虛幻4藍圖快速入門 三 虛幻4藍圖快速入門 四 虛幻4屬性系統 反射 翻譯 深入研究虛幻4反射系統實現...