用途:该技能面向虚幻引擎5.x的C++开发,提供编写健壮、高性能且符合规范的代码的专家级指引,适用于开发Actor、Component或UObject派生类、优化性能关键代码、调试内存泄漏与垃圾回收问题、实现蓝图可调用功能以及遵循Epic官方编码规范。
主要能力:
- UObject与垃圾回收:UObject*成员变量始终使用UPROPERTY()以被GC跟踪;需要UObject图之外的根引用时可用TStrongObjectPtr<>,通常更推荐addToRoot();理解IsValid()与nullptr检查的区别,IsValid()可安全处理pending kill状态。
- 反射系统:用UCLASS()、USTRUCT()、UENUM()、UFUNCTION()将类型暴露给反射系统与蓝图;尽量少用BlueprintReadWrite,对不应被UI或关卡蓝图逻辑覆盖的状态优先用BlueprintReadOnly。
- 性能优先:默认关闭Tick(bCanEverTick = false),确有必要才启用,优先使用定时器(GetWorldTimerManager())或事件驱动逻辑;避免在热循环中使用Cast<T>(),在BeginPlay中缓存引用;数据密集型、非UObject类型使用F结构体以减少开销。
- 命名规范(严格):模板加T前缀(如TArray、TMap);UObject加U;AActor加A;Slate控件加S;结构体加F;枚举加E;接口加I;布尔变量加b前缀。
- 常见模式:避免在Tick中调用GetComponentByClass,改在PostInitializeComponents或BeginPlay中查找并用check()校验;用接口解耦系统(如Implements<UInteractable>()配合IInteractable::Execute_OnInteract);对大型资源用TSoftClassPtr/TSoftObjectPtr避免硬引用强制加载。
- 调试:用UE_LOG配合自定义分类(DEFINE_LOG_CATEGORY_STATIC);用GEngine->AddOnScreenDebugMessage输出屏幕消息;Visual Logger对AI调试很有用,可实现IVisualLoggerDebugSnapshotInterface。
- PR前检查清单:该Actor是否真需要Tick,能否改为定时器;所有UObject*成员是否已用UPROPERTY包装;硬引用(TSubclassOf)是否造成加载链,能否改为软指针;是否在EndPlay中清理了已验证的委托。
使用方式:在任务匹配该技能范围时,通过@unreal-engine-cpp-pro调用上游工作流,先阅读metadata.json与ORIGIN.md确认仓库、分支、提交与导入路径,再仅加载真正影响结果的引用、示例或脚本(如examples/ExampleActor.cpp、examples/ExampleActor.h),保持出处与来源边界在回答中可见,最后按上游预期验证结果。
适用场景与限制:适用于明确匹配上述范围的虚幻引擎C++开发任务;输出不能替代针对具体环境的验证、测试或专家审查;若缺少必要输入、权限、安全边界或成功标准,应停止并请求澄清。未提供具体的安装命令、收费或价格信息。