UE4 小知识点 GEngine ,GEditor ,GameInstance ,World, LocalPlayer生命周期

摘抄自大钊的 subsystem知乎

理解这些引擎重要的内建类的生命周期机制是理解的基础。因此也请读者事先知道引擎编辑器模式、Runtime模式和PIE(Play In Editor)模式这三个的区别。编辑器模式就是你启动编辑器,Runtime模式是指你游戏打包后的运行状态,PIE模式指的是在编辑器里点击Play后的运行状态。

  1. UEngine* GEngine: 代表引擎,数量1。 Editor或Runtime模式都是全局唯一,从进程启动开始创建,进程退出时销毁。
  2. UEditorEngine* GEditor: 代表编辑器,数量1。 顾名思义,只在编辑器下存在且全局唯一,从编辑器启动开始创建,到编辑器退出时销毁。
  3. UGameInstance* GameInstance:代表一场游戏,数量1。 从游戏的启动开始创建,游戏退出时销毁。这里的一场游戏指的是Runtime或PIE模式的运行的都算,一场游戏里可能会创建多个World切换。
  4. UWorld* World:代表一个世界,数量可能>1。 对此不明白的建议读者去看我之前的GamePlay架构文章。简单来说,World和GameMode是关联的,可以包含多个Level,默认情况下OpenLevel常常会切换World。因此其生命周期,其实跟GameMode是一起的。但也请读者建议,编辑器模式下视口里的场景其实也是个World,因此EWorldType其实有多个类型:Game,Editor,PIE,EditorPreview,GamePreview等。读者需知道,编辑器下的视口场景也是个World!
  5. ULocalPlayer* LocalPlayer:代表本地玩家,数量可能>1。 UE支持本地分屏多玩家类型的游戏,但往往最常见的是就只有一个。LocalPlayer虽然往往跟PlayerController一起访问,但是其生命周期其实是跟UGameInstance一起的(默认一开始的时候就创建好一定数量的本地玩家),或者更准确的说是跟LocalPlayer的具体数量挂钩(当然你也可以运行时动态调用AddLocalPlayer)。

因此你想理解好那5个Subsystem类的生命周期,就得理解这5个Host对象的生命周期。道理很简单,Subsystem对象的创建和销毁都是在Host对象的创建和销毁的时候相应执行的。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值