引擎是怎么加入所有UClass等类的预定义信息

在main函数前执行一些代码,加入一些预定义信息.

具体方式:

1.每个定义了GENERATED_BODY()的类,都会自定义一些全局静态变量,就是这些变量初始化的时候,在main函数之前执行的代码

image.png

通过这些宏定义和ue4的自身预处理,会在XXX.generated.h文件中生成相关定义

image.png
image.png

经过不断的变换,最终定义了这个全局静态变量,并且,这个变量还不是指针,是个类的实体对象,即:是要进行初始化的,并且在main函数之前调用构造函数.


image.png
image.png

跳入TClassCompiledInDefer类中看一下具体定义

image.png

我们看到该构造函数里面调用了UClassCompiledInDefer函数,具体看一下这个函数是怎么实现的.

红线框住的东西就是各种存储UClassInfo的容器.


image.png
image.png

在编辑器启动的时候,main函数之前,就注册了这些编译信息.

image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容