完整教程:UFUNCTION C++ 的再次理解

一.UFUNCTION 格式

和属性也比较像,两部分 函数说明符,和元数据说明符

UFUNCTION不仅能 控制对蓝图公开,还能与 绑定委托,用户输入,网络回调特性相关联,而且还能创建自己控制带命令

二.函数说明符控制 ,函数在引擎和编辑器各个反面的UPERPERTY属性说明符类似,属性控制的时变量。

BlueprintPure |

此函数不对拥有它的对象产生任何影响,可在蓝图或关卡蓝图图表中执行。早默认情况下,带有 const 标记的函数将作为纯函数公开。要将常量函数变成非纯函数,你可以做以下声明:BlueprintPure=false

1.纯函数没用引脚。const 就表示不改变里面的变量

UFUNCTION(BlueprintPure)
float  BlueprintPureFunction();
UFUNCTION(BlueprintCallable)
float BlueprintCallableFunction();
UFUNCTION(BlueprintCallable)
int32 BlueprintCallableConstFunction() const;
UFUNCTION(BlueprintPure = fasle)
int32 BlueprintPureFalseFunction() const;

在UE 的 C++ 中,const 关键字用于修饰函数,表示该函数不会改变其作用域内的变量值。 添加 const 后有以下几个意义: 常量函数:当你声明一个函数为 const,则表明它不会修改任何外部对象的状态,这对于安全性和提高代码效率很有帮助,因为编译器可以对这类函数进行优化

2.纯函数没有引脚,输出引脚连两次的话,哪怕是打印函数,可能会执行两次逻辑。

3.BlueprintImplementableEvent

BlueprintImplementableEvent | 此函数可在蓝图或关卡蓝图图表中实现。

感觉官方不够准却,记住一定不要再 .cpp里写定义。它一定要在蓝图里才能定义,头文件声明一下就行了。

4.BlueprintNativeEvent

| 此函数旨在被蓝图覆盖掉,但是也具有默认原生实现。用于声明名称与主函数相同的附加函数,但是末尾添加了_Implementation,是写入代码的位置。如果未找到任何蓝图覆盖,该自动生成的代码将调用 _Implementation 方法。

这里官方还比较明确了,蓝图覆盖不了,再用.cpp里的原生的。

5.BlueprintAuthorityOnly | 如果在具有网络权限的机器上运行(服务器、专用服务器或单人游戏),此函数将仅从蓝图代码执行。

只在服务器上进行伤害,本地不会。

posted @ 2025-09-02 14:13  yjbjingcha  阅读(26)  评论(0)    收藏  举报