Unreal C++ 游戏框架编程指南
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/unreal-cpp-gameplay-hhgh。
技能介绍
UE5 的 C++ 游戏代码为什么难写对
在 UE5 里写游戏逻辑 C++,卡住人的往往不是语言本身,而是反射系统:UCLASS()、GENERATED_BODY()、Foo.generated.h 三件套缺一不可,类名前缀(A/U/F/E/I)必须与基类一致,漏掉任何一环都会在 UHT 处理或链接阶段直接报错。另一个高频问题是模块依赖——调用了 EnhancedInput 的 API 却没在 .Build.cs 里声明,链接期就会出现 unresolved external symbol。
这个技能覆盖什么
- 反射宏的正确用法:用
UPROPERTY暴露属性(同时让 GC 能追踪),用UFUNCTION把行为暴露给编辑器和蓝图 - Gameplay Framework 角色分工:
AGameModeBase定规则和默认类,APawn/ACharacter是受控身体,APlayerController代表玩家意志,UActorComponent是可复用行为 - 模块依赖配置:在
*.Build.cs的PublicDependencyModuleNames中添加引擎模块
核心工作流
- 按基类选前缀:Actor 系用
A,UObject/组件系用U,普通结构体用F - 类上方写
UCLASS(),GENERATED_BODY()作为类体第一行,.generated.h放在头文件最后一个 include - 构造函数里用
CreateDefaultSubobject创建组件并设好RootComponent - 编译验证:函数体改动可用 Live Coding,改头文件或 UPROPERTY 必须完整重建并确认编辑器中可见
适用边界与常见坑
它只管 C++ 类与反射层的基础,蓝图可视化逻辑、输入绑定、AI 逻辑请交给对应的技能。几个容易踩的坑:裸 UObject* 不加 UPROPERTY 会被 GC 误回收(UE5 里用 TObjectPtr);重写 BeginPlay/Tick 忘记调用 Super:: 会跳过引擎初始化;改了 UCLASS/UPROPERTY 却只依赖 Live Coding,改动不会生效。
使用场景
- 为 UE5.4+ 项目创建自定义角色 C++ 类时,需要正确编写 UCLASS 宏、类名前缀与构造函数中的组件创建
- 设置 GameMode 的默认类(Pawn、HUD)时,需要理清 Gameplay Framework 各基类的职责边界
- 用 UPROPERTY/UFUNCTION 暴露属性与行为给蓝图时,需要处理 GC 追踪与接口可见性
- 调用 EnhancedInput 等模块 API 遇到链接错误时,需要在 .Build.cs 中补充模块依赖
适合人员
- UE5 C++ 游戏程序员,需要为项目编写可被蓝图调用的 Actor 与 Component 类
- 从蓝图转向 C++ 的玩法程序,想弄清 Gameplay Framework 中 AGameModeBase/APawn/APlayerController 的职责分工
- 游戏开发团队的技术负责人,需要审查新成员提交的 UE5 C++ 类是否遵循反射宏与命名前缀规范
- 编写 UE5 教学材料或内部规范的工程师,需要一份关于 UE5 游戏 C++ 常见错误的核对清单