IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> UE4 源码阅读:从引擎启动到Receive Begin Play -> 正文阅读

[游戏开发]UE4 源码阅读:从引擎启动到Receive Begin Play

一、引擎主循环

UE版本:4.27
一、引擎主循环的位置:
Launch.cpp : Guarded Main函数
在这里插入图片描述

二、、Guarded Main函数执行逻辑:
1、EnginePreInit:加载大多数模块

int32 ErrorLevel = EnginePreInit( CmdLine );

PreInit模块加载顺序:
在这里插入图片描述
模块加载过程:
(1)注册模块中定义的UObject,同时为每个类构造一个类默认对象(CDO,记录类的默认状态,作为模板用于子类实例创建)
(2)调用模块的StartUpModule方法

2、FEngineLoop::Init()
1、 检查Engine的配置文件找出使用了哪一个GameEngine类(UGameEngine和UEditorEngine,均派生自UEngine)
在这里插入图片描述
2、 创建该类的实例,并让全局UEngine指针(GEngine)指向该实例
在这里插入图片描述
(3)触发全局委托告知引擎已初始化
在这里插入图片描述
(4)加载插件和项目模块
在这里插入图片描述(5)引擎启动成功
在这里插入图片描述

3、UGameEngine:
调用顺序:
在这里插入图片描述
(1)UGameEngine::Init:
会在地图加载完之前进行初始化,初始化过程会创建
GameInstance、GameViewportClient、LocalPlayer对象,之后游戏启动
创建GameInstance:
在这里插入图片描述
创建GameViewportClient,代表屏幕本身:
在这里插入图片描述
创建LocalPlayer,代表坐在屏幕前的用户,之后游戏启动:
在这里插入图片描述

(2)LoadMap的作用:
加载在DefaultEngine.ini中定义的地图,将会创建UWorld对象(保存游戏地图中所有的AActor)、以及一些在游戏地图加载后才生成的对象
上:在游戏地图加载前生成的对象
下:在游戏地图加载后生成的对象
当切换新地图中,地图中的所有对象都会被销毁,UWorld对象被清空(不使用seamless travel)
在这里插入图片描述

(3)LoadMap加载World的过程(UEngine::LoadMap):
1、触发全局委托表明游戏地图更换,如果当前已经加载一张地图,会清理并销毁当前World
在这里插入图片描述

2、GameInstance加载World
在这里插入图片描述
3、加载WorldPackage,创建UWorld对象,
在这里插入图片描述
4、在World中保存对GameInstance的引用,World对象的引用保存在WorldContext中,并将其世界类型设置为Game。
AddToRoot:防止被垃圾回收;
InitWorld:让World对象能够对一些物理,寻路,AI和声音的系统进行设置;
SetGameMode:World对象会让GameInstance在世界生成一个GameMode的Actor对象,同时所有引用到的资产都会被加载:
在这里插入图片描述
5、InitializeActorsForPlay:
(1)首先会注册世界中的所有Actor组件(Actor上的每一个Component也要被注册);Component注册过程(UActorComponent::RegisterComponentWithWorld)。
在这里插入图片描述
(2)Component被注册后,World会调用GameMode的InitGame方法,GameMode会生成一个GameSession类的Actor对象:
在这里插入图片描述
(3)RouteActorInitialize:
World遍历每一个Level初始化所有Actor对象,每个Actor会先调用PerInitializeComponent方法,做初始化的早期工作;GameMode作为Actor也会在这是被调用,并生成GameState对象,并将其关联到World对象中。;
在这里插入图片描述在这里插入图片描述
之后还会对所有Actor进行一个遍历,这次会调用InitializeComponents和PostInitializeComponents方法,完成World的初始化。
6、Spawn Actor
遍历GameInstance里的所有Local Player
在这里插在这里插入图片描述
入图片描述
7、处理登录过程
8、LoadMap总结
Engine -> World World -> GameMode -> GameState
在这里插入图片描述

(4)游戏循环:

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-09-30 01:19:47  更:2022-09-30 01:20:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/17 3:59:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码