UE C++开发需遵循引擎规则:类须继承UE基类并用UCLASS等宏声明,变量函数用UPROPERTY/UFUNCTION暴露给蓝图,内存由引擎管理,修改后需编译热重载,调试用UE_LOG或VS附加进程。

在Unreal Engine 4/5中使用C++不是“写个类就能运行”的简单事,而是要理解UE的反射系统、对象生命周期和编辑器集成机制。核心在于:用UE的宏(如UCLASS、UPROPERTY)告诉引擎“这个类/变量需要被识别”,否则编辑器看不到、蓝图调不了、甚至运行时会崩溃。
从C++类开始:别直接写普通C++类
UE不认标准C++类。所有要参与游戏逻辑的类,必须继承自UE基础类(如AActor、UObject、UActorComponent),并用UE宏声明:
-
必须加
UCLASS():放在类声明前,让引擎生成反射数据; -
类名建议以A(Actor)、U(Object/Component)、F(Struct)或T(Template)开头,比如
AMyCharacter、UHealthComponent; -
构造函数里要用
PrimaryActorTick.bCanEverTick = true才能启用Tick(); -
不要手动
new或deleteUE对象——用GetWorld()->SpawnActor<t>()</t>或Destroy()由引擎管理内存。
暴露变量和函数给蓝图:靠UPROPERTY和UFUNCTION
想在蓝图里拖线、设默认值、调用函数?光写public不行,得加宏:
-
UPROPERTY(EditAnywhere, BlueprintReadWrite):变量能在细节面板修改、蓝图读写; -
UPROPERTY(VisibleDefaultsOnly):只在类默认值里显示,实例中不可改; -
UFUNCTION(BlueprintCallable):函数可在蓝图中调用; -
UFUNCTION(BlueprintPure):纯函数(无副作用),可作节点返回值; - 参数也要加
UPARAM标签(如UPARAM(ref))才能传引用给蓝图。
编译与热重载:别跳过这步,否则代码不生效
UE的C++代码不会自动加载。每次改完必须:
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~