UE5 反射代码生成与注册
本文以 UE5.4 为基准,剖析反射代码的生成内容和注册流程。
简介
UE5 的 C++ 需要各种宏来辅助开发,在编译时使用 UHT
工具扫描这些宏来生成 XXX.generated.h
和 XXX.gen.cpp
两个文件,接下来将分析UHT生成的文件,来学习反射具体做了什么。代码将会删减掉热更相关的内容,只关注核心逻辑。
反射代码
Enum
枚举的声明在C++中有三种方式,C风格、namespace、enum class。
1 | enum class ECppForm |
为了减小本文篇幅,此处只看 enum class。在一个新文件中定义完该 enum class 后,进行构建。
1 | UENUM(BlueprintType) |
最终会生成 generated.h
和 gen.cpp
两个文件。
generated.h
的内容如下,仅仅只是一些模板全特化,便于开发。
1 |
|