UE4之UFUNCTION介绍

image.png

UFUNCTION

UFunction 是虚幻引擎4(UE4)反射系统可识别的C++函数。

UObject 或蓝图函数库可将成员函数声明为UFunction,方法是将 UFUNCTION 宏放在头文件中函数声明上方的行中。

例如:

public: 
    UFUNCTION(BlueprintCallable, Category = "Snowing,BlueprintFunc")
        void BlueprintCallableFunction();

宏将支持函数说明符更改UE4解译和使用函数的方式。

UFUNCTION的定义:

UFUNCTION([specifier1=setting1, specifier2, ...], [meta(key1="value1", key2, ...)])
ReturnType FunctionName([Parameter1, Parameter2, ..., ParameterN1=DefaultValueN1, ParameterN2=DefaultValueN2]) [const];
image.png

可利用函数说明符将UFunction对蓝图可视化脚本图表公开,以便开发者从蓝图资源调用或扩展UFunction,而无需更改C++代码。

在类的默认属性中,UFunction可绑定到委托,从而能够执行一些操作(例如将操作与用户输入相关联)。

函数说明符

声明函数时,可以为声明添加函数说明符,以控制函数相对于引擎和编辑器的各个方面的行为方式。

函数说明符 效果
BlueprintAuthorityOnly 如果在具有网络权限的机器上运行(服务器、专用服务器或单人游戏),此函数将仅从蓝图代码执行。
BlueprintCallable 此函数可在蓝图或关卡蓝图图表中执行。
BlueprintCosmetic 此函数为修饰性的,无法在专用服务器上运行。
BlueprintImplementableEvent 此函数可在蓝图或关卡蓝图图表中实现。
BlueprintNativeEvent 此函数旨在被蓝图覆盖掉,但是也具有默认原生实现。用于声明名称与主函数相同的附加函数,但是末尾添加了Implementation,是写入代码的位置。如果未找到任何蓝图覆盖,该自动生成的代码将调用 Implementation 方法。
BlueprintPure 此函数不对拥有它的对象产生任何影响,可在蓝图或关卡蓝图图表中执行。
CallInEditor 可通过细节(Details)面板`中的按钮在编辑器中的选定实例上调用此函数。
Client 此函数仅在拥有在其上调用此函数的对象的客户端上执行。用于声明名称与主函数相同的附加函数,但是末尾添加了Implementation。必要时,此自动生成的代码将调用 Implementation 方法。
CustomThunk UnrealHeaderTool 代码生成器将不为此函数生成thunk,用户需要自己通过 DECLARE_FUNCTION 或 DEFINE_FUNCTION 宏来提供thunk。
Exec 此函数可从游戏内控制台执行。仅在特定类中声明时,Exec命令才有效。
NetMulticast 此函数将在服务器上本地执行,也将复制到所有客户端上,无论该Actor的 NetOwner 为何。
Reliable 此函数将通过网络复制,并且一定会到达,即使出现带宽或网络错误。仅在与ClientServer配合使用时才有效。
SealedEvent 无法在子类中覆盖此函数。SealedEvent关键词只能用于事件。对于非事件函数,请将它们声明为staticfinal,以密封它们。
ServiceRequest 此函数为RPC(远程过程调用)服务请求。这意味着 NetMulticast 和 Reliable。
ServiceResponse 此函数为RPC服务响应。这意味着 NetMulticast 和 Reliable。
Server 此函数仅在服务器上执行。用于声明名称与主函数相同的附加函数,但是末尾添加了 _Implementation,是写入代码的位置。必要时,此自动生成的代码将调用 _Implementation 方法。
Unreliable 此函数将通过网络复制,但是可能会因带宽限制或网络错误而失败。仅在与ClientServer配合使用时才有效。
WithValidation 用于声明名称与主函数相同的附加函数,但是末尾需要添加_Validate。此函数使用相同的参数,但是会返回bool,以指示是否应继续调用主函数。
image.png

你可能感兴趣的:(UE4之UFUNCTION介绍)