虚幻引擎 C++ 进阶
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-02qudk26/unreal-engine-cpp-pro。
技能介绍
你在 UE5 C++ 里常踩的坑
Actor 里裸存的 UObject* 没被 GC 追踪、Tick 里反复 GetComponentByClass、硬引用把整包资源链进内存——这些在蓝图里不明显,换成 C++ 就会变成泄漏、卡顿或加载顺序灾难。本技能面向 Unreal Engine 5.x 的 C++ 工作流,帮助你在写 Actor、Component、UObject 派生类时,把 Epic 编码标准 和引擎机制对齐,而不是凭直觉堆代码。
技能会怎么引导你
- 生命周期与 GC:强调
UPROPERTY()包裹成员指针、IsValid()与nullptr的差异,以及在需要根引用时的TStrongObjectPtr/addToRoot()取舍。 - 反射与蓝图边界:用
UCLASS/USTRUCT/UFUNCTION暴露类型;对不应被关卡蓝图改写的状态,优先BlueprintReadOnly而非到处BlueprintReadWrite。 - 性能习惯:默认关 Tick,用热路径外缓存引用替代循环里
Cast();数据密集逻辑倾向F结构体而非多余UObject。 - 资源与解耦:组件查找放在
PostInitializeComponents/BeginPlay;大型类型用TSoftClassPtr/TSoftObjectPtr避免硬TSubclassOf拖垮加载链;接口(如IInteractable)拆分系统。 - 调试与合入前自检:自定义
UE_LOG分类、可视化日志,以及 PR 前清单(Tick 是否必要、委托是否在EndPlay清理等)。
不适用与注意点
纯蓝图、无 C++ 的项目不必套这套约定;5.x 之前的引擎版本或非 Unreal 引擎也不在本技能范围内。技能不会替你写完整游戏架构,而是把命名前缀(U/A/F/E/b 等)、反射暴露和性能默认值当成可执行的工程纪律。
使用场景
- 在 UE5 新功能里编写 Actor/Component 派生类,按规范在 BeginPlay 缓存组件并默认关闭 Tick。
- 线上或本地崩溃指向 UObject 野指针,需核对成员是否用 UPROPERTY 被 GC 正确追踪。
- 实现需被关卡蓝图调用的 C++ API,用 UFUNCTION 暴露同时用 BlueprintReadOnly 保护内部状态。
- 策划配置的大型角色或关卡资源导致加载卡顿,需把硬 TSubclassOf 改成软引用异步加载。
适合人员
- 维护 UE5 玩法 C++ 模块、希望在日常提交里对齐 Epic 前缀命名与反射暴露规范的游戏程序员
- 把 Tick 内 Cast/GetComponent 热路径迁到 C++ 并做性能收敛、同时保留蓝图可调入口的 gameplay 工程师
- 负责 5.x 项目内存与生命周期问题排查、需要 GC/委托清理检查清单的技术负责人或引擎向开发者
- 搭建交互或模块化玩法系统、倾向用接口与 TSoftObjectPtr 控制资源加载链的 Unreal 客户端开发者