UC++的宏定义语法详解
Unreal Engine中宏定义语法的使用
示例代码:
1 | // 类声明宏:使类被纳入Unreal反射系统 |
关键宏参数详解:
UCLASS 常用参数:
参数 | 作用 |
---|---|
Blueprintable | 允许基于此类创建蓝图 |
BlueprintType | 允许在蓝图中作为变量类型使用 |
NotBlueprintable | 明确禁止蓝图继承(默认) |
meta=(DisplayName) | 编辑器显示名称 |
UPROPERTY 常用参数:
参数 | 作用 |
---|---|
VisibleAnywhere | 属性可见但不可编辑 |
EditAnywhere | 属性可任意编辑 |
EditDefaultsOnly | 仅允许在类默认值中编辑 |
BlueprintReadOnly | 蓝图只读访问 |
Category | 属性分类(编辑器分组) |
meta=(ClampMin=0) | 元数据:限制最小值 |
UFUNCTION 常用参数:
参数 | 作用 |
---|---|
BlueprintCallable | 可从蓝图调用 |
BlueprintPure | 纯函数(无副作用) |
Category | 函数分类 |
meta=(Deprecated) | 标记为已弃用 |
特殊说明:
-
GENERATED_BODY()
必须:- 放在类定义的最开始位置
- 每个反射类必须有且仅有一个
- 展开后包含类型标识符等关键信息
-
命名规范要求:
- 反射类必须以
U
开头(如UMyObject
) - 非反射类不应使用
U
前缀
- 反射类必须以
-
继承规则:
1
2
3
4
5
6
7
8// 正确:继承自UObject派生类
class UMyActor : public AActor {
GENERATED_BODY()
// ...
};
// 错误:不能直接从非UObject继承
class UInvalidClass : public std::enable_shared_from_this { /*...*/ };
这些宏共同构成了Unreal的反射系统基础,使C++类能够与蓝图编辑器、序列化系统等引擎功能无缝交互。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 古月月仔的博客!
评论