关于 ue5-cpp-gameplay
ue5-cpp-gameplay 是用于设计和实现 Unreal Engine 5.6–5.8 游戏玩法 C++ 类的技能,涵盖 Blueprint API、运行时行为、复制与验证,并要求成对输出头文件和源文件。
主要功能
- 01设计面向 Blueprint 的类 API
- 02成对生成 .h 和 .cpp 文件
- 03遵循 UE5 反射与指针惯例
- 04实现复制与服务器权威 RPC
- 05处理 GameplayTags 和数据驱动设置
- 06说明验证方式与故障行为
适用场景
- 01创建 Actor 或组件游戏玩法类
- 02向 Blueprint 暴露指定功能
- 03实现复制游戏状态与 RPC
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ unrealxu/ unrealengine5-skills --skill ue5-cpp-gameplay安装后在 Claude Code 中输入/ue5-cpp-gameplay确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
agents/openai.yamlreferences/cpp-class-template.mdproject-adapter.mdreflection-macro-checklist.md详细介绍
快速开始
- 确认目标类类型(
AActor、UActorComponent、UObject、USaveGame等)。 - 在实现前定义所需的 Blueprint 接口。
- 同时输出头文件和源文件。
API 锚点(UE5.6-UE5.8)
- 反射和 UObject 锚点:
UCLASS、USTRUCT、UENUM、UINTERFACE、GENERATED_BODY()UPROPERTY(...)、UFUNCTION(...)
- 核心游戏类型锚点:
AActor、UActorComponent、UDataAsset、UGameInstanceSubsystem- 在头文件中使用
TObjectPtr<>,并使用TSubclassOf<>引用类
- 复制锚点:
GetLifetimeReplicatedProps(...)Net/UnrealNetwork.h中的DOREPLIFETIME(...)ReplicatedUsing=OnRep_*、UFUNCTION(Server/Client/NetMulticast, ...)
- Gameplay Tag 锚点:
FGameplayTag、FGameplayTagContainer- 显式执行标签请求/匹配检查,并提供安全回退行为
实现阶段约定
- 每项游戏 C++ 任务都必须定义:
- 公共头文件 API 表面(Blueprint/API 可见性)
- 私有运行时实现路径(
.cpp) - 所有权/生命周期模型(构造、初始化、拆除)
- 网络权限规则(仅单人游戏或复制流程)
- 验证方法(编译假设、使用示例、边缘情况行为)
- 若缺少任何一项,实现规范即不完整。
工作流
1) 类型与文件结构
- 使用 Unreal 宏和 UE5 指针约定(头文件中使用
TObjectPtr)创建类型声明。 - 生成成对的
.h和.cpp文件,在头文件中使用前置声明,并在源文件中包含具体头文件。 - 保持类的职责精简且可复用。
2) 公共 API 设计
- 在实现前定义 Blueprint API(
BlueprintCallable、BlueprintPure、分类、元数据)。 - 仅公开最少的可调用接口;除非确有需要,否则辅助方法不要使用 UFUNCTION。
- 明确声明输入/输出约定和失败行为。
3) 运行时实现
- 在
.cpp中实现逻辑,包含空值检查、权限校验和明确的分支行为。 - 按需启用 Tick;优先使用事件驱动更新。
- 明确处理初始化顺序(
BeginPlay、InitializeComponent或子系统初始化)。
4) 复制和 RPC(需要时)
- 仅为客户端可见的实际状态添加复制属性和
OnRep_*处理程序。 - 使用
DOREPLIFETIME(...)在GetLifetimeReplicatedProps(...)中注册属性。 - 使用服务器权威的 RPC 入口处理客户端请求。
5) GameplayTags 和数据驱动钩子
- 使用
FGameplayTag/FGameplayTagContainer和显式标签名称。 - 在运行时验证必需标签,并为缺失的标签提供回退方案。
- 可调参数优先使用 DataAsset 驱动配置,而非硬编码常量。
6) 验证输出
- 确保输出包含两个文件及所需的 include。
- 确认文档说明了 Blueprint 暴露、复制行为和错误处理路径。
- 对于行为不明显的情况,提供用法代码片段或调用流程。
约束
- 创建类时,始终提供匹配的
.h和.cpp。 - 使用兼容 UE5.6-UE5.8 的非弃用 API。
- 尽量减少 include;在头文件中使用前置声明。
- 除非明确要求,否则避免硬编码资源路径。
- 在头文件的 UPROPERTY 对象引用中优先使用
TObjectPtr<>。 - 对任何会影响网络的游戏操作,明确执行服务器权威检查。
故障处理
- 症状:类编译成功,但未显示在蓝图中。
- 定位:缺少
BlueprintType/Blueprintable/BlueprintCallable元数据。 - 修复:添加所需的反射说明符,并重新生成项目文件和构建项目。
- 定位:缺少
- 症状:出现未解析的符号或头文件循环依赖。
- 定位:检查头文件包含关系图,以及前置声明的误用。
- 修复:将大型头文件包含移至
.cpp文件,并在头文件中保留前置声明。
- 症状:复制的属性未在客户端更新。
- 定位:检查
GetLifetimeReplicatedProps(...)以及 Actor/组件的复制标志。 - 修复:使用
DOREPLIFETIME(...)注册属性,并确保所属 Actor 已启用复制。
- 定位:检查
- 症状:
OnRep_*从未触发。- 定位:检查属性写入路径和网络角色。
- 修复:在服务器权威路径中修改属性,并确认属性值确实发生变化。
- 症状:RPC 可调用,但运行时被忽略。
- 定位:检查 RPC 说明符和调用点的权威性。
- 修复:确保请求路径为客户端->服务器,并在服务器端进行验证。
- 症状:GameplayTag 逻辑静默失效。
- 定位:检查标签名称是否无效,以及是否缺少标签配置。
- 修复:在启动时验证标签,并添加明确的回退行为保护。
UE5.6-UE5.8 兼容性说明
- 上述反射、复制和 GameplayTag API 在 UE5.6-UE5.8 中均保持稳定。
- 需要运行时行为时,优先使用稳定的核心 API,而非仅限编辑器的辅助工具。
升级处理
- 当用户要求进行超出单个游戏类范围的插件/模块级重构时,升级处理。
- 当解决方案需要修改自定义引擎源代码时,升级处理。
评论
支持 Markdown