UPROPERTY 是虚幻引擎反射系统的核心宏,用于声明类成员变量并赋予其特殊属性。
主要UPROPERTY特性参数分类
1. 网络复制相关
Replicated: 标记属性将从服务器复制到客户端
ReplicatedUsing = 函数名: 属性复制到客户端后会调用指定的回调函数
NotReplicated: 显式标记不复制(用于覆盖父类设置)
2. 编辑器可见性
EditAnywhere: 所有实例可编辑
EditDefaultsOnly: 仅原型(CDO)可编辑
EditInstanceOnly: 仅实例可编辑
VisibleAnywhere: 所有地方可见但不可编辑
VisibleDefaultsOnly: 仅原型可见
VisibleInstanceOnly: 仅实例可见
3. 蓝图交互
BlueprintReadWrite: 蓝图可读写
BlueprintReadOnly: 蓝图只读
BlueprintAssignable: 用于多播委托,可在蓝图中订阅
BlueprintCallable: 用于单播委托,可在蓝图中调用
BlueprintAuthorityOnly: 只在服务器上运行的代码可访问
4. 序列化控制
SaveGame: 属性会在保存游戏时序列化
Transient: 不会被序列化(不保存)
Config: 可从配置文件加载
DuplicateTransient: 复制对象时不会复制此属性
5. 高级特性
Meta=(参数列表): 提供元数据,如
Meta=(AllowPrivateAccess="true"): 允许私有成员在蓝图中访问
Meta=(ClampMin="0.0", ClampMax="1.0"): 值的范围限制
Meta=(EditCondition="bEnableSomething"): 条件编辑
Category="分类名": 在编辑器中的分类
Instanced: 对象被视为外部对象的一部分,而不是独立对象
6. 网络相关优先级
ReplicationCondition = COND_XXX: 复制条件
UPROPERTY(ReplicatedUsing=OnRep_X, RepNotify=XXX): 复制通知选项
示例代码
// 基本复制
UPROPERTY(Replicated)
float Health;
// 复制带回调
UPROPERTY(ReplicatedUsing=OnRep_CurrentHealth)
float CurrentHealth;
// 回调函数实现
UFUNCTION()
void OnRep_CurrentHealth();
// 复制带元数据控制
UPROPERTY(Replicated, Meta=(ClampMin="0.0", ClampMax="100.0"))
float Stamina;
官方文档链接
拓展提示
在GAS系统中,利用ReplicatedUsing属性可以精确控制何时更新客户端的属性值,并在客户端属性值变化时触发特定逻辑,比如UI更新、特效播放等。
UE中UPROPERTY特性参数全解析
4667

被折叠的 条评论
为什么被折叠?



