UE_Variable(变量) 和 Property(属性)

Unreal Engine(UE) 中,Variable(变量)Property(属性) 的概念与其他编程语言类似,但结合了引擎特有的设计模式(如反射系统、蓝图可视化脚本等),因此有一些关键差异和特殊用法。


1. Variable(变量)

定义

  • 在 UE 中,变量是存储数据的基本单元,可以是 原生C++变量蓝图变量
  • 作用域取决于声明位置(如局部变量、类成员变量)。

特点

  • C++ 中:直接定义的普通变量(如 int Count;),没有自动的序列化或编辑器暴露功能。
  • 蓝图中:通过 “Variable” 面板创建的变量,可以是任何UE支持的类型(如 IntegerActor Reference 等)。
  • 默认无额外逻辑:仅仅是存储数据,不自动触发事件或绑定。

示例

// C++ 中的普通变量(非UE属性)
int EnemyCount;
// 蓝图中创建的变量(如 "Health" 浮点类型)
[Blueprint] 
Variable Name: Health 
Type: Float 
Default Value: 100.0

2. Property(属性)

定义

  • 在 UE 中,Property(属性) 特指通过 UPROPERTY() 宏标记的成员变量,使其具备引擎增强功能。
  • 它是变量的一种,但具有额外的元数据(Metadata)和引擎集成特性。

特点

  • 支持反射:UE 的反射系统可以访问这些属性(用于序列化、网络复制、蓝图调用等)。
  • 编辑器集成:可在 UE编辑器 中显示、编辑,并支持细节面板(Details Panel)调整。
  • 高级功能
    • Replication(网络同步)
    • BlueprintReadOnly/BlueprintReadWrite(蓝图访问权限)
    • EditAnywhere/VisibleDefaultsOnly(编辑权限)
    • Category(在编辑器中的分类)

示例

// C++ 中带 UPROPERTY() 的属性
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Gameplay")
float Health = 100.0f;
// 在蓝图中,这样的属性会自动显示在 "Details" 面板,并可供修改。

关键区别(Unreal Engine 特有)

维度Variable(变量)Property(属性 UPROPERTY
定义方式普通C++变量或蓝图变量UPROPERTY() 宏标记的变量
编辑器支持不显示(除非是蓝图变量)可显示在细节面板,并调整默认值
反射/序列化不支持支持(存档、网络复制、蓝图交互)
网络复制不能直接复制可通过 Replicated 实现网络同步
蓝图交互仅限蓝图变量可通过 BlueprintReadOnly 等控制访问
用途临时计算、内部逻辑暴露给编辑器、网络同步、蓝图控制

UE 中的特殊规则

  1. 蓝图的 “Variable” 也是 Property

    • 在蓝图中创建的变量,底层会被 UE 当作 UPROPERTY 处理(具备序列化、编辑器支持)。
    • 但它们的灵活性不如 C++ 的 UPROPERTY(如不能直接设置 Replicated)。
  2. C++ 普通变量 vs UPROPERTY

    • 如果变量需要在编辑器、存档或网络中使用,必须UPROPERTY()
    • 否则,它只是一个普通变量,UE 不会管理它。
  3. 结构体(USTRUCT)中的变量

    • 如果想在结构体中使用 UE 功能(如蓝图编辑),也需要 UPROPERTY()

总结(UE 最佳实践)

  • Variable(普通变量):临时存储、局部计算、不涉及引擎集成的数据。
  • Property(UPROPERTY)
    • 需要编辑器调整的参数(如角色血量、武器伤害)。
    • 需要网络同步的变量(如 Replicated)。
    • 希望蓝图读取或修改的值(如 BlueprintReadWrite)。

示例场景

// 普通变量(仅内部使用)
float TemporaryDamage; 

// UPROPERTY(编辑器可调、蓝图可读、网络同步)
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Replicated)
float MaxHealth = 200.0f;

在 UE 中,理解 UPROPERTY 的用法是高效开发的关键,它让变量变成引擎管理的“属性”,而不仅仅是数据存储。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值