You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

UE中BlueprintGetter与BlueprintSetter属性说明符的作用是什么?

关于UE中BlueprintGetter和BlueprintSetter的实际意义

先看一段C++代码示例:

private:
    // UPROPERTY(BlueprintGetter=GetHealth, BlueprintSetter=SetHealth) ?????
    int32 Health;
public:
    UFUNCTION(BlueprintPure)
    int32 GetHealth() const { return Health; }
    UFUNCTION(BlueprintCallable)
    void SetHealth(int32 InHealth) { this->Health = InHealth; }

两种使用场景的差异

  • 不添加BlueprintGetter/BlueprintSetter时:私有变量Health在蓝图中不可直接访问,只能通过GetHealth()和SetHealth()函数间接读写,完全符合面向对象的封装设计逻辑。
  • 添加该说明符后:蓝图中可以像操作公共变量一样直接访问Health,但这并不是直接绕过封装读写私有变量内存,底层实际上还是调用你定义的GetHealth()和SetHealth()函数。

BlueprintGetter和BlueprintSetter的实际意义

  • 提升蓝图开发效率:蓝图开发者无需手动拖出Getter/Setter节点,直接通过变量引用就能完成读写,操作更直观便捷,同时又能保证执行C++层定义的逻辑(比如你可以在SetHealth里加入数值范围校验、触发血量变化事件等)。
  • 兼容蓝图变量系统特性:可以在蓝图的细节面板中直接编辑该变量数值(支持编辑时/运行时修改),还能利用蓝图变量的复制、序列化等特性,同时不破坏C++层的封装规则。
  • 统一跨层访问逻辑:无论在C代码还是蓝图中,读写Health的逻辑都是一致的,避免了蓝图直接操作变量而绕过C层业务规则的问题。

内容的提问来源于stack exchange,提问作者orange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 08:34:57