1. 蓝图相关参数
参数 |
作用 |
适用场景 |
BlueprintCallable |
允许蓝图调用该函数 |
蓝图按钮、角色逻辑 |
BlueprintPure |
纯函数,无需执行引脚,不修改对象状态 |
数学运算、数据查询 |
BlueprintImplementableEvent |
蓝图必须实现,C++ 不能定义 |
特效、UI 事件 |
BlueprintNativeEvent |
蓝图可选实现,C++ 可提供默认定义 |
可扩展功能,如 AI 逻辑 |
BlueprintAuthorityOnly |
仅在 服务器 可调用 |
服务器专属逻辑,如物品掉落 |
BlueprintCosmetic |
仅客户端 可执行 |
UI、动画、粒子特效 |
// 示例:蓝图可调用函数
UFUNCTION(BlueprintCallable, Category="Gameplay")
void Jump();
//蓝图里可以调用 Jump(),但 C++ 里仍然可以正常使用。
2. 网络(RPC)相关参数
参数 |
作用 |
适用场景 |
Server |
仅在 服务器 执行(需要 HasAuthority()) |
服务器逻辑(如伤害计算) |
Client |
仅在 客户端 执行(服务器调用) |
客户端特效(如 UI 更新) |
NetMulticast |
服务器执行,并让所有客户端同步执行 |
全体可见效果(如爆炸特效) |
Reliable |
确保 RPC 可靠 传输(数据重要时使用) |
物品拾取、开门 |
Unreliable |
允许 RPC 不可靠 传输(节省带宽) |
瞬时数据,如子弹轨迹 |
// 示例:服务器 RPC
UFUNCTION(Server, Reliable)
void Server_TakeDamage(int32 Damage);
// 客户端调用 Server_TakeDamage(),但代码只会在服务器端执行。
3. 执行权限
参数 |
作用 |
适用场景 |
Exec |
允许在 控制台 输入命令执行 |
调试命令、AI 刷新 |
CallInEditor |
允许在 编辑器模式 执行 |
自动化工具、地图生成 |
//示例:控制台命令
UFUNCTION(Exec)
void SpawnEnemy();
// 在游戏控制台(~ 键)输入 SpawnEnemy 即可执行此函数。
4. 反射系统(反序列化、垃圾回收等)
参数 |
作用 |
适用场景 |
Category="..." |
设定蓝图中的分类 |
组织蓝图函数 |
CustomThunk |
自定义 thunk 代码(高级用法) |
底层优化 |
Meta=(Key=Value) |
额外元数据(用于 UE 反射系统) |
高级蓝图控制 |
//示例:设置蓝图分类
UFUNCTION(BlueprintCallable, Category="Player Actions")
void Sprint();
// 蓝图中 Sprint() 会归类到 "Player Actions" 里。
5. 编辑器功能
参数 |
作用 |
适用场景 |
DeprecatedFunction |
标记函数为 废弃,不推荐使用 |
API 变更 |
SealedEvent |
防止蓝图重写该事件 |
不希望子类修改 |
WithValidation |
RPC 调用前检查参数合法性 |
安全性检查 |
//示例:废弃函数
UFUNCTION(BlueprintCallable, DeprecatedFunction, Category="Legacy")
void OldFunction();
// 蓝图会提示 OldFunction() 已废弃,但仍然可以调用。
6.组合使用示例
UFUNCTION(BlueprintCallable, Server, Reliable, Category="Networking")
void Server_DealDamage(int32 Damage);
UFUNCTION(BlueprintImplementableEvent, BlueprintCosmetic, Category="UI")
void ShowDamageEffect();
//服务器端计算伤害 (Server_DealDamage),客户端显示受伤特效 (ShowDamageEffect)。