UCLASS 在 UE4 中是一个宏,用于声明类并传递描述符以创建特定于引擎的 UClass。以下是关于 UCLASS 宏的详细解答:
基本功能:UCLASS 宏包含类的标准 C++ 类声明,并传递描述符以创建特定于 Unreal Engine 4 的 UClass。这是定义引擎和编辑器特定行为的关键工具。
必须伴随宏:在类体最前方需要放置 GENERATED_BODY 宏,这是与 UCLASS 宏配合使用的。
关键字与功能:
- classGroup:设置编辑器中显示类的 actor 组。
- Within:确保类实例始终具有指定外部类的子类继承关系。
- BlueprintType:使类公开为蓝图中变量的类型。
- NotBlueprintType:禁止将类公开为蓝图中变量的类型。
- Blueprintable:允许使用蓝图创建类的实例。
- NotBlueprintable:禁止使用蓝图创建类的实例。
- MinimalAPI:指示类仅导出用于 dynamic_cast<> 等工作所需的方法。
- customConstructor:阻止自动生成的构造函数声明。
- Intrinsic 和 noexport:分别指示类在 C++ 中直接声明,且不生成自动生成的代码。
- placeable 和 notplaceable:分别表示类在编辑器中可创建并放置或禁止放置。
- DefaultToInstanced:表明类实例化后被视为“实例”,即在构造时被复制。
- Const:表示类中的所有属性和函数都是 const,且应导出为 const 类型。
- Abstract:表明类为抽象类,不能直接实例化。
- deprecated:表示不推荐使用此类,序列化时不会保存实例。
- Transient 和 nonTransient:分别表示类无法保存或应该正常保存。
- config 和 perObjectConfig:用于在构造时加载对象配置。
- configdonotcheckdefaults:确定在序列化为配置时是否基于 base / defaults ini 进行检查。
- defaultconfig:仅将对象配置保存到默认 INI,而不保存到本地 INI。
- editinline 和 noteditinlinenew:影响属性编辑器的行为。
- hidedropdown:表示类用于选择类的编辑器下拉列表中不显示。
- showCategories 和 hideCategories:在属性查看器中显示和隐藏类别。
- 更多关键字:如 ComponentWrapperClass、showFunctions、hideFunctions、autoExpandCategories、autoCollapseCategories、dntAutoCollapseCategories、collapseCategories、AdvancedClassDisplay、ConversionRoot、Experimental、EarlyAccessPreview、SparseClassDataType 等,用于进一步定义类的行为和特性。
Metadata:包括 BlueprintSpawnableComponent、ChildCanTick、ChildCannotTick 等关键字,用于更细致地控制 Actor 和组件类的行为。
通过正确使用 UCLASS 描述符和元数据,开发者可以精细控制 UE4 类的特性和行为,从而提高开发效率和游戏质量。