Linux平台下UE的代码启动流程

概述

本篇主要写下Linux下UE的启动流程,主要还是代码流程。从最开始的main函数,到最后的引擎层的启动退出,至于中间加载UE引擎各个插件的内容,不是这篇的主要内容。

main(主函数)

从简单的hello,world到一个复杂的程序的拆解过程,都是从main函数开始。接下来看看main函数。
runtime
launchlinux.cpp

先找到runtime,然后在招的Launch下边各个平台的启动。要找各个平台的main,都在对应的文件夹下。这里以linux为例。

CommonUnixMain(unix平台通用函数)

在这里插入图片描述
可以看到,main函数里,有一个CommonUnixMain函数;

CommonUnixMain

有几个参数,第一个参数argc,是第二个参数argv数组的数量;第二个参数argv,是一个数组;第三个参数realMain,是下一个调用的一系列函数的函数链;第四个参数,是一个退出回调。

这些内容,看下英文注释,基本上可以看明白;接下来看下具体的函数内容。函数内容是根据参数来的,从第一个,第二个参数开始吧;

argc
这段代码把argc,argv给解析出来;主要是argv,然后存到一个变量GSavedCommandLine里;

在看下realMain,
RealMain
如上图,上边处理完的argv的参数,也就是命令行参数,作为参数给第三个函数GuardedMain。

GuardedMain(引擎主函数)

来看看这个函数,其实这个函数内部主要封装了几个函数,如下:

  1. EnginePreInit
  2. SlowTask.EnterProgressFrame(80);
  3. SlowTask.EnterProgressFrame(20);
  4. EditorInit/EngineInit
  5. EngineTick
  6. EditorExit/EngineExit

其实,就是引擎预初始化(EnginePreInit),初始化(EditorInit/EngineInit),循环(EngineTick),退出(EditorExit/EngineExit)。

初始化
如上图,是预初始化,还有引擎/编辑器初始化的代码;可以看到,在预初始化的时候,有个命令行参数,也就是说,有关命令行参数的操作,大概率都是在这里处理的;具体逻辑不是本篇的重点,以后有空看看。

循环,退出代码
引擎退出

这个是循环,退出的代码。第一个里边的退出是编辑器退出,第二个里边的是引擎的退出。退出肯定会有大批的流程,不是一两句话说明白的。不细说。

AppExitCallback(退出调用)

退出
这个函数比较简单,主要是退出函数,回调到LaunchUnix_FEngineLoop_AppExit函数;这个函数的调用,如下图:

退出
这个函数最终会调用到相应平台的退出函数。具体实现,看一下就知道了。跨平台的内容,对应的代码理顺了,没有那么难。

小结

本篇主要写了linux平台下的ue的代码调用流程。主要从主函数(main),平台通用函数(CommonUnixMain),引擎主函数(GuardedMain),退出调用(AppExitCallback)这几个方面写的。看完这篇,相信没看过或者理过这块的人思路应该清晰了不少。按照这个顺序,去理解其他平台,应该也会轻松很多。但是,毕竟还是涉及到一些C++的基础,这块,可以参考学习学习。至于其他的流程,有空可以自己理理。OK,这篇结束!

  • 14
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值