UE中UPROPERTY特性参数详解

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更新、特效播放等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值