简述UE中的UFUNCTION宏和UPROPERTY宏常用属性

33 篇文章 8 订阅

        Unreal Engine 中的 UFUNCTIONUPROPERTY 宏是在C++代码中定义函数和属性时经常使用的关键宏。它们允许开发者添加各种属性和元数据,以便更好地控制函数和属性在引擎中的行为。这里简单介绍一下这两个宏的主要属性和用法。

1. UFUNCTION 宏

1.1 BlueprintCallable
UFUNCTION(BlueprintCallable, Category = "MyCategory") 
void MyFunction();

允许在蓝图中调用该函数。

1.2 BlueprintPure
UFUNCTION(BlueprintPure, Category = "MyCategory") 
int32 GetMyValue() const;

标记该函数是一个纯粹的函数,即它不修改对象的状态。

1.3 BlueprintImplementableEvent
UFUNCTION(BlueprintImplementableEvent, Category = "MyCategory") 
void MyEvent();

允许在蓝图中实现该事件的自定义行为。

1.4 BlueprintNativeEvent
UFUNCTION(BlueprintNativeEvent, Category = "MyCategory") 
void MyNativeEvent(); 
virtual void MyNativeEvent_Implementation();

定义一个原生的蓝图事件,但是可以在C++中提供默认实现。

1.5 Server、Client、NetMulticast
UFUNCTION(Server, Reliable, WithValidation) 
void MyServerFunction(); 

UFUNCTION(Client, Reliable) 
void MyClientFunction(); 

UFUNCTION(NetMulticast, Reliable) 
void MyMulticastFunction();

用于标记在服务器、客户端或所有客户端上执行的函数。

1.6 Reliable、Unreliable
UFUNCTION(Reliable, Server, WithValidation) 
void MyReliableServerFunction(); 

UFUNCTION(Unreliable, Client) 
void MyUnreliableClientFunction();

在网络环境中,表示函数调用是可靠或不可靠的。

2. UPROPERTY 宏

2.1 BlueprintReadWrite
UPROPERTY(BlueprintReadWrite, Category = "MyCategory") 
int32 MyProperty;

允许蓝图读写该属性。

2.2 EditAnywhere
UPROPERTY(EditAnywhere, Category = "MyCategory") 
float MyFloatProperty;

允许在编辑器中任何地方编辑该属性。

2.3 VisibleAnywhere
UPROPERTY(VisibleAnywhere, Category = "MyCategory") 
FVector MyVectorProperty;

在编辑器中显示该属性的值,但是不允许编辑。

2.4 BlueprintReadOnly
UPROPERTY(BlueprintReadOnly, Category = "MyCategory") 
bool bMyBooleanProperty;

允许蓝图读取该属性的值,但是不能写入。

2.5 EditDefaultsOnly
UPROPERTY(EditDefaultsOnly, Category = "MyCategory") 
AActor* DefaultActor;

仅在类的默认对象上编辑该属性,而不是在每个实例上。

2.6 Transient
UPROPERTY(Transient, Category = "MyCategory") 
int32 MyTransientProperty;

表示该属性不会被序列化或保存。

2.7 SaveGame
UPROPERTY(SaveGame, Category = "MyCategory") 
float SavedFloatProperty;

用于标记一个属性,使其在保存游戏状态时被保存。

2.8 Replicated
UPROPERTY(Replicated, ReplicatedUsing = OnRep_MyProperty, Category = "MyCategory") 
int32 MyReplicatedProperty;

表示该属性在网络中复制到客户端。

2.9 EditFixedSize
UPROPERTY(EditFixedSize, EditFixedSizeArray = "4", Category = "MyCategory")
TArray<int32> FixedSizeArray;

允许在编辑器中为数组或 TMap 类型的属性设置固定大小。

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值