UE5 在启动流程中的 PreInit 4

简介: 前面已经捋了 62% ,结果草率了,遇到了一个很长的函数调用 AppInit(),它里面有不少的操作,很更多没见过的类,我觉得应该展开看一下

PreInitPreStartupScreen 内的 AppInit() 函数

本文就主要来捋一下 这个 AppInit 函数把,它本身也是定义在 LaunchEngineLoop.cpp 内的,应该很好定位到

  1. 第一步就是本地化初始

  2. 向全局错误缓冲区写入致命错误信息

  • FCString C风格字符串工具类
  • FCString::Strcpy 字符串copy
  • LINE_TERMINATOR_ANSI 字符串结果字符 宏
  1. FPlatformMisc 的 PlatformPreInit

  2. FPlatformApplicationMisc 的 PreInit

  3. GSystemStartTime 记录系统启动时间

  4. 设置当前工作目录到执行程序的根目录

  5. 根据 cmdline 内容初始化 IFileManager

  6. FPageAllocator 管理虚拟内存页,锁定内存页保护模式

  7. 根据 cmdLine 的参数 控制 FMemory 的EnablePurgatoryTests 和 EnablePoisonTests 开关

  8. 根据 cmdLine 参数设置 是不是 BUILDMACHINE

  9. 创建项目 log 目录

  10. 创建最小的 dump 文件名称

  11. 设置 输出设备

  12. FConfigCacheIni 初始化配置缓存系统

  13. 如果是 GIsEditor 模式,则为 FName 预分配内存

  • FName UE中高效管理唯一字符串标识的系统
  1. ConfigUtilities 配置管理工具。通过热修复更新控制台变量

  2. 加载 "IoStoreOnDemand" 模块

  3. FTraceAuxiliary的初始化预设

  4. 调用 IniSystemReady 阶段的延迟注册函数

  5. 在最早的可能阶段 加载 Project 的关联模块和 开启的 Plugin 的模块

  6. 调用 EarliestPossiblePluginsLoaded 阶段的延迟注册函数

  7. FPlatformStackWalk 初始化调用栈捕获工具

  8. 检查打印时间样式

  9. 检查项目或插件是否完整

  10. FLogSuppressionInterface 根据 cmdline 参数初始化

  11. 根据 cmdline 参数 确定是否 显示 LOG

  12. 加载 PostConfigInit 阶段之后的 Project 相关模块和 Plugin 相关模块

  13. FEmbeddedCommunication 嵌入式内部调用,目前不知道是干嘛的

  14. 根据 CmdLine 参数,设置远程调试,包含致命错误和非致命错误两种

  15. 根据 CmdLine 参数,设置是否将 warning log 作为 error,是否将 Error log 作为 warning 等其他log 相关设置

  16. 输出所有初始化的 log

  17. FMaintenance 如果正在构建 log ,则删除旧的log

  18. FAPP 初始化 session

33.check()宏 验证各种数据类型的大小

  1. GColorList 创建通用 color 映射

  2. FAutomationTestFramework 根据配置设置 强制冒烟测试

  3. FCoreDelegates 广播内核系统初始化,初始化其他 system

  4. FPIEPreviewDeviceModule 设置预览设备

总结

这个 AppInit 函数基本就是设置 log,加载项目模块和插件,并通过广播的形式通知其他系统初始化
罗列一下这里遇到的新东西

  • FName UE中高效管理唯一字符串标识的系统
  • FConfigCacheIni 初始化配置缓存系统
  • ConfigUtilities 配置管理工具
  • FPlatformStackWalk 初始化调用栈捕获工具
  • GColorList 全局通用颜色列表
  • FAutomationTestFramework 自动化测试框架
  • FPIEPreviewDeviceModule 预览设备模块
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 简介: 捋完 ProjectBrowser 的启动项目流程,心情甚是舒畅,现在来开始重新梳理 Launch 流程,...
    暴走TA阅读 84评论 0 1
  • 简介: 前面已经捋了 42% ,速度不算慢,前文捋到了运行模式,接下来我们继续看 PreInitPreStartu...
    暴走TA阅读 101评论 0 1
  • 简介: 前面已经捋了 15% 了,看到了是否发送 GPU 绘制事件的,位置,接下来我们继续,我们还在 PreIni...
    暴走TA阅读 77评论 0 1
  • 这篇是自己学习所用,请谨慎观看,具体内容可看下面博客:Android启动流程简析[https://www.jian...
    QGv阅读 1,390评论 0 0
  • 最近一时兴起,想对Android的启动流程进行一次分析,经过一番整理,从以下几个方面进行总结,代码部分只讨论思路,...
    逸先森阅读 37,436评论 0 53