UE5中Add Code按钮灰色因项目未启用C++支持,必须用With C++ Support模板新建;蓝图项目无法后期添加C++,需迁移内容重建;Class Settings选AActor(可入场景)或UObject(纯数据);GENERATED_BODY()、UCLASS()等宏不可删;编译失败需手动运行Build.bat并清理Saved/Intermediate/。

UE5 里创建 C++ 类为什么点不了 Add Code?
因为项目没启用 C++ 支持,或者不是“C++ 项目”模板启动的。虚幻编辑器里右上角的 Add Code 按钮是灰色的,本质是项目缺少 .sln 解决方案和 Source/ 目录结构。
- 新建项目时必须勾选 With C++ Support(哪怕你打算后期加,也得从这开始)
- 用 Blueprint-only 模板创建的项目,
Add Code永远不可用——不能靠“后期补”来激活 C++ 工作流 - 如果已有蓝图项目想加 C++,唯一可靠做法是:新建一个 C++ 项目 → 迁移内容(
Content/文件夹复制过去)→ 手动重建引用
Class Settings 里该选 Actor 还是 Object?
取决于你要不要进场景、有没有组件、是否需要 Tick。选错会导致编译通过但运行时行为异常,比如不触发 BeginPlay() 或根本无法拖进世界。
-
AActor:能放场景里、挂组件、有Tick()、响应事件(如碰撞)。90% 的游戏逻辑类从它派生,例如AMyCharacter -
UObject:纯数据/工具类,不进场景,无生命周期函数,适合配置类(UDataTable)、工具函数集合(UStaticLibrary)或数据容器 - 别选
APawn或ACharacter当基类——除非你真要重写移动逻辑;直接继承它们会让子类失去灵活性,且容易和引擎默认行为冲突
生成的 .h 和 .cpp 里哪些代码不能删?
UE 自动生成的宏和声明不是样板,删了会链接失败或反射失效。尤其新手常手贱删掉 GENERATED_BODY() 或 UCLASS() 参数,结果编译成功但蓝图里看不到类、变量不显示、甚至编辑器崩溃。
- 必须保留:
UCLASS()宏(含Blueprintable等参数)、GENERATED_BODY()、构造函数声明(AMyActor(const FObjectInitializer& ObjectInitializer);) - 可以安全删:注释块、
TODO行、未使用的#include(但"MyActor.generated.h"绝对不能删) - 如果加了
UPROPERTY()却忘了在UCLASS()里加Blueprintable或BlueprintType,变量在蓝图里就不可见——不是 bug,是显式限制
修改 C++ 类后编辑器卡住或报 Module not found
这是编译产物和编辑器状态不同步的典型表现,不是代码写错了,而是构建流程断在中间。常见于保存后立刻切回编辑器、或 VS 编译失败但 UE 没感知到。
立即学习“C++免费学习笔记(深入)”;
- 先关掉编辑器,再手动运行
Build.bat(项目根目录下),比点编辑器里的Compile更可靠 - 检查
Binaries/Win64/下是否有新生成的MyProject.dll;没有说明编译根本没过,去看 VS 输出窗口里的error LNK2019或unresolved external - 若 DLL 存在但编辑器仍报错,删掉
Saved/和Intermediate/文件夹(UE 会自动重建),再重启编辑器
最麻烦的其实是头文件循环依赖——比如 A.h 包含 B.h,B.h 又包含 A.h,VS 可能只报 warning,但 UE 会静默跳过整个模块。这种问题不会红标,但类彻底消失,得靠排查 #include 链。



















