Appearance
UFUNCTION
使用UFUNCTION修饰函数。
cpp
UFUNCTION(指令,指令..., meta(key=value))
// UPROPERTY中有meta的详解
如果参数类型是引用型参数,则蓝图中将当做返回参数使用,无法查到输入针脚。
如果参数类型是const修饰的引用型参数,则参数被当做输入针脚使用。
例如:
cpp
UFUNCTION(BlueprintCallable)
int32 CAge(const int32& num); // 有输入引脚num
// int32 CAge(int32& num); // 有输出引脚num
另外,
如果函数没有返回类型,在蓝图中当做Event使用 如果函数有返回类型,在蓝图中当做函数使用(在函数的overlap中寻找)
如果有参数,则:
- 无返回值,参数是基本数据类型的,当做普通事件输入参数使用
- 无返回值,参数是基本数据类型引用的,当做函数看待,在函数表中寻找
- 无返回值,参数是自定义数据类型的,编译不通过
- 无返回值,参数是自定义数据类型引用的,当做普通函数看待,在函数表中寻找
- 有返回值的,当做函数使用
描述指令
- BlueprintCallable
表明此函数可在蓝图中被调用
- Category
分类。可以在搜索时到指定的分类下找到我们标记的函数。有多个层级,用竖线分隔。(竖线是键盘上\按键上的那个,shift+\即可)
cpp
UFUNCTION(BlueprintCallable, Category="MyFunc|NumOperate")
int32 attackCount(const int32& num); // 有输入引脚num
- BlueprintImplementableEvent
只能在C++中调用,在蓝图中无法调用。
用这个标记,我们可以在C++构建的时候声明,但是定义由蓝图完成,从而达到C++中无需定义,且C++向蓝图进行调用的目的。
- BlueprintNativeEvent
只能在C++中调用,在蓝图中无法调用,但是可以在蓝图中被重写。使用该标记,需要额外书写一段函数声明并定义。
蓝图中实现后,可以右键函数节点,选择add call to parent function调用父类的函数逻辑
cpp
UFUNCTION(BlueprintNativeEvent)
void sayName();
UFUNCTION(BlueprintImplementableEvent)
void sayName_Implementation();
// 在cpp中定义。此略
- BlueprintPure
构建一个蓝图中的纯函数,用来获取对象数据,必须有有效返回值。它的定义和实现均放在c++中。
cpp
UFUNCTION(BlueprintCallable, BlueprintPure)
void sayName();
// 在cpp中定义。此略