UE5 在启动流程中的 Init 4

简介: 前文已经过了一遍 UUnrealEdEngine 的相关代码, 本文再过一下 UGameEngine
UUnrealEdEngine 类似,UGameEngine 的 Init 开始也是先调用基类 UnrealEngine 的Init,所以先捋 UEngine 的Init。
UEngine 在文件 UnrealEngine.cpp

UEngine::Init(IEngineLoop* InEngineLoop)

  1. 开启性能追踪、输出 "Initializing Engine ......" 日志,开启 CPU 周期性能记录

  2. 创建 Error 和 warning 收集器队列

  3. FEngineBuildSettings 检查引擎构建设置,如果不是内部构建,则遍历插件输出相关版本信息

  4. 设置内存 warning handler

  5. 设置 EngineLoop

  6. 注册引擎元素

  7. FURL 初始化引擎的 URL 解析系统

  8. EngineSubsystemCollection 引擎子系统集创建和初始化

  9. UGameMapsSettings 根据 cmdline 设置默认map

  10. 初始化 引擎 delat 时间

  11. AddToRoot 防止被回收

  12. 添加 PreGarbageCollect 委托

  13. 如果是空项目则初始化 HMD 设备和 EyeTracking 设备

  14. 当不是 eidtor 时,关闭 ScreenSaver

  15. 如果不是 专属服务器和cmd模式,则初始刷 FSlateApplication 的音频

  16. FObjectThumbnail 设置缩略图压缩器

  17. 加载 UEngine class 对象

  18. 加载配置

  19. 设置配置进程限制

  20. 设置选中材质的颜色

  21. 加载 WorldPartitionEditor 模块

  22. 初始化物体引用

  23. FBlueprintCoreDelegates 设置脚本最大 Loop 迭代次数

  24. 设置全局近裁切面

  25. UTextRenderComponent 初始化 MID 缓存

  26. FNetworkVersion 设置项目版本

  27. 根据 cmdling 设置执行文件

  28. ParseExecCommands 设置执行命令

  29. 根据命令行设置 vsync console 变量

  30. 检查派生数据缓存,如果正常则广播启动完成

  31. 添加路由错误和网络错误监听事件

  32. FOnlineExternalUIChangedUOnlineEngineInterface 初始化在线子系统

  33. 初始化并注册可调是的渲染缓冲区

  34. 初始化 protal 服务

  35. FEngineAnalytics 链接引擎分析服务,这里调用的是 Initialize ,但是注释写的是 connect

  36. 初始化音频管理器

  37. 动态加载引擎运行时的模块

  • ImageWriteQueue
  • StreamingPauseRendering
  • MovieScene
  • MovieSceneTracks
  • LevelSequence
  • CinematicCamera
  • SparseVolumeTexture
  1. check(AssetManager),并调用AssetManager->FinishInitialLoading();

  2. EngineStats 添加统计数据项

  3. 通知所有监听器新添加的数据统计项

  4. 根据 cmdline 添加网络追踪

  5. 记录 HMD 分析数据

  6. 初始化线程配置

UGameEngine::Init(IEngineLoop* InEngineLoop)

在非 Editor 模式下的 Init 过程中创建的 GEngine 就是这个类

  1. 开启性能统计和cpu周期统计

  2. FEngineConsoleCommandExecutor 创建 cmd 执行对象

  3. 调用上方 UEngine 的 Init

  4. GNetworkProfiler 根据 cmdline 参数 打开追踪

  5. 加载并应用用户游戏设置

  6. 创建 Game 单例,并初始化

  7. IMovieSceneCaptureInterface 创建视频采样对象,并获取句柄

  8. UGameViewportClient 创建并初始化 客户端视口

  9. 记录 log flush 时间

  10. 附加 Viewport 到新的 视口

  11. UGameViewportClient 广播视口创建完毕

  12. bIsInitialized 设置为 true

总结

  • FURL 引擎的 URL 解析系统
  • UGameMapsSettings 地图设置系统
  • FObjectThumbnail 缩略图压缩工具
  • FBlueprintCoreDelegates 蓝图核心委托
  • UTextRenderComponent 文本渲染组件
  • FOnlineExternalUIChanged 在线 UI 系统的 changed 委托
  • UOnlineEngineInterface 引擎在线接口
  • FEngineConsoleCommandExecutor 引擎的控制台执行示例
  • FNetworkProfiler 网络调试系统
  • IMovieSceneCaptureInterface 视频采样
  • UGameViewportClient game视窗
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容