游戏世界,万物皆Actor,Actor再通过Component组装Actor所拥有的功能,Actor再通过UChildActorComponent实现Actor之间的父子嵌套。
Actor又通过UChildActorComponent实现Actor之间的父子嵌套
众多的Actor由组装成了Level,Level就是用于装载Actor的容器
一个个Level又组成一个World
而当World进行切换时,就用WorldContext来保存切换的过程信息
玩家在切换PersistentWorld的时候,实际上就相当于切换了一个World
整个游戏唯一的GameInstance由Engine对象管理着
GameInstance不光保存World同时要保存以各种方式进入World中开始游戏的Player
Player有着LocalPlayer用于存储本地玩家,也有NetConnection当作远端的连接
玩家利用Player对象接入World之后,就可以开始控制Pawn和PlayerController的生成,有了附身的对象和摄像的眼睛。最后在Engine的Tick心跳脉搏驱动下开始一帧帧的逻辑更新和渲染。
AController是用来控制APawn的一个特殊的AActor
AController同时也根据用法和使用对象的不同分化出:玩家本地的控制器PlayerController,和AI的控制器AIController,而数据配套就是PlayerState
在Level的切换,GameMode也负责协调Actor的迁移。
World构建好了,该玩家进来了,但游戏的方式多样,玩家的接入方式也多样,抽象出了UPlayer实体来实际上控制游戏中的玩家PlayerController的生成数量和方式
所有的数据和逻辑汇集到一起就形成了,UGameInstance对象,代表着游戏的开始和结束。同时为了方便开发者进行玩家存档,提供USaveGame进行全局数据的配套