美文网首页
Unreal 加载流程

Unreal 加载流程

作者: 百思不得Ting姐 | 来源:发表于2021-06-23 16:04 被阅读0次

    Launch模块的Launch.cpp里GuardedMain为通常意义的Main函数,这里有游戏循环;

    在这个函数里,首先调用GEngineLoop.PreInit(),这个函数完成所有底层模块和自定义模块以及插件的加载(这些模块被定义为早期加载);

    然后调用GEngineLoop.Init(),这里生成了Engine实例,调用engine实例的Init()方法,然后加载了晚期模块和插件,然后又调用Start()方法;

    在engine.Init()方法内部主要工作:创建GameInstance、GameViewportClient、LocalPlayer实例;

    在engine.Start()方法内部主要工作:调用LoadMap()方法;

    在engine.LoadMap()方法内部主要工作:

    1、加载map包,生成UWorld,包括level、actor等;

    2、调用UWorld的一些方法,如InitWorld(),这个方法配置物理、AI、声音等;还有SetGameMode()方法,这个方法生成了GameMode

    3、加载始终要加载的子level;

    4、调用world.InitializeActorsForPlay()方法,主要工作:

           ①、注册所有actor的component,并且,如果component是primitivecomponent类型,还会创建FprimitiveSceneProxy对象,该对象属于FScene(UWorld在渲染线程里的对应版本);

            ②、调用gameMode.InitGame(),生成GameSession对象;

            ③、循环调用所有level的RouteActorInitialize()方法,这里完成所有actor的初始化,其中GameMode也属于actor,因此会GameMode也会得到初始化,这时候会产生GameState对象;

     5、产生player;上文提到的LocalPlayer是引擎模块的,对应的在游戏模块里为APlayerController,这个过程产生playercontroller,并且产生spawn;

    6、调用world.BeginPlay()方法;

    相关文章

      网友评论

          本文标题:Unreal 加载流程

          本文链接:https://www.haomeiwen.com/subject/dhfbyltx.html