当前位置: 首页 > news >正文

【UE5】虚幻引擎的运行逻辑

UE5的运行逻辑可以分为引擎启动流程游戏运行流程两个部分。

引擎启动流程

一、平台入口&引擎主流程初始化

1、系统入口

不同的平台会有不同的入口。在Windows平台,入口是Launch模块下的\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp文件中的WinMain()函数。

2、FEngineLoop初始化

FEngineLoop是整个引擎运行控制器,生命周期管理器。

FEngineLoop::PreInit()

作用:用于早期设置,引擎模块初始化。

  • 解析命令行
  • 加载config文件(DefaultEngine.ini等)
  • 初始化日志系统(GLog)
  • 创建GIsEditor或GIsGameAgnosticExe标志
  • 加载平台相关信息(平台模块)
FEngineLoop::Init()

作用:用于引擎的主要子系统初始化。

  • 加载各个模块(ModuleManager)
  • 创建并初始化UGameEngine或UEditorEngine
  • 初始化RHI(渲染硬件接口)和Rendering System
  • 加载默认地图或启动器地图
  • 创建GameInstance,启动游戏或进入编辑器

二、模块加载系统:FModuleManager

UE使用FMoudleManager统一控制管理动态模块加载,常见模块有:

  • Core
  • CoreUObject
  • Engine
  • InputCore
  • RenderCore
  • RHI
  • Renderer
  • Slate
  • UMG
  • MyGameModule(用户创建的项目模块)
FModuleManager::Get().LoadModuleChecked<ISlateRHIRendererModule>("SlateRHIRenderer");
FModuleManager::Get().LoadModule(TEXT("Renderer"));

三、创建&初始化UGameEngine

在游戏模式下,会构造UGameEngine,并调用其Init():

//\Engine\Source\Runtime\Launch\PrivateLaunchEngineLoop.cppGEngine = NewObject<UEngine>(GetTransientPackage(), EngineClass);
check(GEngine);GEngine->ParseCommandline();UE_LOG(LogInit, Log, TEXT("Initializing Game Engine..."));
GEngine->Init(this);
UE_LOG(LogInit, Log, TEXT("Initializing Game Engine Completed"));

内部做了:

  • 加载GameViewportClient
  • 创建UWorld,并加载初始地图
  • 初始化Audio、Physics、Navigation、Streaming、Scene、AI、Input等子系统。

四、世界和地图加载:UWorld创建

UEngine::LoadMap()中会:

  • 创建UWorld(每个地图一个世界)
  • 创建GameModeBase,GameState,PlayerController
  • 加载Level、Actors、components等内容
  • 初始化Navigation、Lightmaps、Landscape、AI、Streaming等系统

五、初始化关键对象

  • UGameInstance:游戏生命周期管理器(全局)
  • AGameModeBase:地图规则控制器(服务器端)
  • AGameStateBase:同步游戏状态(客户端可见)
  • APlayerController:玩家输入管理器
  • APawn/ACharacter:玩家可操控角色

六、Editor与Game的分支流程

类型对应Engine类初始化地图特殊流程
编辑器运行UEditorEngine启动编辑器地图创建FEditorViewportClient,运行SlateEditor
游戏运行UGameEngine加载默认地图创建GameInstance,运行主循环

七、Tick启动,进入主循环

FEngineLoop::Tick();

启动主循环,每帧调用:

  • 输入处理
  • Tick世界(UWorld)
  • AI、动画、物理等更新
  • 提交渲染数据,开启RenderThread
  • Slate/UMG UI更新

游戏运行流程

未完待续

http://www.dtcms.com/a/269402.html

相关文章:

  • 【操作系统】进程(二)内存管理、通信
  • 【喜报】第三届BDDM 会议成功申请 IEEE 冠名,并获得 IEEE 北京分会赞助!
  • 佰力博科技与您探讨电晕极化和油浴极化有什么区别?
  • maven 发布到中央仓库之持续集成-03
  • 当Powerbi遇到quickbi,性能优化方式对比
  • Unity实用技能-背景自适应文本
  • Docker部署QAnything2.0并接入大模型
  • 基于极大似然估计的Gm-APD信号提取算法2025.7.8
  • 技术演进中的开发沉思-28 MFC系列:关于C++
  • 界面控件Telerik UI for WinForms 2025 Q2亮点 - 支持.NET 10 Preview
  • AIGC与影视制作:技术革命、产业重构与未来图景
  • XCKU060‑2FFVA1156I Xilinx FPGA AMD Kintex UltraScale
  • 文献学习|全面绘制和建模水稻调控组景观揭示了复杂性状背后的调控架构。
  • django-ckeditor配置html5video实现视频上传与播放
  • 基于Hadoop的用户购物行为可视化分析系统设计与实现
  • stm32 H7 ADC DMA采集
  • 240.搜索二维矩阵Ⅱ
  • c++-引用(包括完美转发,移动构造,万能引用)
  • 华为OD机试 2025B卷 - 数组组成的最小数字(C++PythonJAVAJSC语言)
  • 【Python进阶篇 面向对象程序设计(3) 继承】
  • 使用 GDB 调试 Redis 服务进程指南
  • pyhton基础【25】面向对象进阶六
  • 【ARM AMBA AXI 入门 21.1 -- AXI partial 访问和软件的按字节访问关系】
  • Transformer模型架构深度讲解
  • 医疗AI底层能力全链条工程方案:从技术突破到临床落地
  • L0:让大模型成为通用智能体的强化学习新范式
  • 针对Exhcnage Server的攻击防范措施
  • 机器人VLA模型(Vision-Language-Action)
  • 网络安全之XSS漏洞:原理、危害与防御实践
  • 基于mysql8.0.27部署1主2从的MHA集群