UE4中的属性声明符和元数据

( 属性声明符..., 元数据=)
UPROPERTY([specifier, specifier, ...], [meta(key=value, key=value, ...)])
Type VariableName;

属性说明符
常用
  • EditAnywhere/EditDefaultsOnly/EditInstanceOnly 在哪里可编辑
  • VisibleAnywhere/VisibleDefaultsOnly/VisibleInstanceOnly 在哪里可见。不可编辑
  • BlueprintReadOnly/BlueprintReadWrite 蓝图只读/蓝图读写
  • BlueprintAssignable 只能与组播委托共用。公开属性在蓝图中指定
  • BlueprintAuthorityOnly 此属性必须为一个组播委托。在蓝图中,只接受带 BlueprintAuthorityOnly 标签的事件
  • SimpleDisplay/AdvancedDisplay 显示在"高级"
  • Category="TopCategory|SubCategory|..." 分类
  • Config 此属性将被设为可配置。当前值可被存入与类相关的 .ini 文件中,创建后将被加载。无法在默认属性中给定一个值。暗示为 BlueprintReadOnly
  • Replicated/NotReplicated 是否可网络复制
  • ReplicatedUsing=FunctionName ReplicatedUsing说明符指定一个回调函数,其在属性通过网络更新时执行
  • SerializeText/SkipSerialization
  • SaveGame/RepRetry
  • Native 属性为本地:C++代码负责对其进行序列化并公开到垃圾回收
  • Localized 此属性的值将拥有一个定义的本地化值。多用于字符串。暗示为 ReadOnly
  • NoClear 阻止从编辑器将此Object引用设为空。隐藏编辑器中的清除(和浏览)按钮
  • NoExport 只适用于本地类。此属性不应包含在自动生成的类声明中

元数据说明符
  1. ClampMin="N"
  2. ClampMax="N"
  3. ConfigHierarchyEditable 此属性被序列化为一个配置(.ini)文件,可在配置层级中的任意处进行设置
  4. DisplayAfter="PropertyName" 在蓝图编辑器中,名为 PropertyName 的属性后即刻显示此属性。前提是两个属性属于同一类别
  5. DisplayName="Property Name" 此属性显示的命名,不显示代码生成的命名
  6. DisplayPriority="N"
  7. DisplayThumbnail="true" 说明属性是一个资源类型,其应显示选中资源的缩略图
  8. EditFixedOrder 使排列的元素无法通过拖拽来重新排序

你可以讲变量设置成Replicated,也就是说,这个变量会生成一个该变量的一对一副本,然后该副本将从服务器复制到客户端
或者你可以使用RepNotify变量。它拥有Replicated的所有功能,同时还提供了一个函数,每当该函数关联的变量更新时,该函数就会调用并在服务器和客户端上执行

UFunction

( 函数声明符..., 元数据=)
UFUNCTION([specifier1=setting1, specifier2, ...], [meta(key1="value1", key2, ...)])
ReturnType FunctionName([Parameter1, Parameter2, ..., ParameterN1, ParameterN2=DefaultValue2]) [const];

函数说明符
  • BlueprintCallable 可在蓝图中执行
  • BlueprintImplementableEvent 可在蓝图实现
  • BlueprintNativeEvent 此函数旨在被蓝图覆盖掉,但是也具有默认原生实现。用于声明名称与主函数相同的附加函数,但是末尾添加了`Implementation,是写入代码的位置。如果未找到任何蓝图覆盖,该自动生成的代码将调用 Implementation` 方法
  • BlueprintCosmetic 此函数为修饰性的,无法在专用服务器上运行
  • BlueprintAuthorityOnly 如果在具有网络权限的机器上运行(服务器、专用服务器或单人游戏),此函数将仅从蓝图代码执行
  • Server 运行于服务器
  • Client 此函数仅在拥有在其上调用此函数的对象的客户端上执行。用于声明名称与主函数相同的附加函数,但是末尾添加了`Implementation。必要时,此自动生成的代码将调用 Implementation` 方法
  • NetMulticast 此函数将在服务器上本地执行,也将复制到所有客户端上,无论该Actor的 NetOwner 为何
  • Reliable/Unreliable 可靠网络复制,一定到达/不可靠网络复制
  • ServiceRequest/ServiceResponse RPC请求/RPC服务响应
  • WithValidation 用于声明名称与主函数相同的附加函数,但是末尾需要添加`_Validate`。此函数使用相同的参数,但是会返回`bool`,以指示是否应继续调用主函数
  • Category = "TopCategory|SubCategory|Etc"
  • CallInEditor 可通过细节(Details)面板`中的按钮在编辑器中的选定实例上调用此函数

元数据说明符
  1. BlueprintInternalUseOnly 此函数是一个内部实现细节,用于实现另一个函数或节点。其从未直接在蓝图图表中公开
  2. BlueprintProtected 此函数只能在蓝图中的拥有对象上调用。其无法在另一个实例上调用
  3. BlueprintAutocast 仅能由来自蓝图函数库的静态 BlueprintPure 函数使用。Cast节点将根据返回类型和函数首个参数的类型来自动添加
  4. DevelopmentOnly 函数只会在Development模式中运行。这适用于调试输出之类的功能
  5. DeprecationMessage="Message Text" 函数已废弃,尝试编译使用此函数的蓝图时,其将被添加到标准废弃警告
  6. KeyWords="Set Of Keywords" 指定在搜索此函数时可使用的一套关键词,例如合适放置节点在蓝图图表中调用函数
  7. ToolTip="Hand-written tooltip 覆盖从代码注释自动生成的提示文本
  8. WorldContext="Parameter" BlueprintCallable 函数使用,说明哪个参数决定运算正在发生的World

函数参数说明符
  • Out 声明由引用传递的参数,使函数对其进行修改
  • Optional 通过任选关键词可使部分函数参数变为任选,任选参数的数值(调用方未指定)取决于函数



comments powered by Disqus