UE4仿真引擎学习
一、架构基础
1. GameInstance
UE提供的方案是一以贯之的,为我们提供了一个GameInstance类。为了受益于UObject的反射创建能力,直接继承于UObject,这样就可以依据一个Class直接动态创建出来具体的GameInstance子类。
UGameInstance里的接口大概有4类:
1. 引擎的初始化加载,Init和ShutDown等(在引擎流程章节会详细叙述)
2. Player的创建,如CreateLocalPlayer,GetLocalPlayers之类的。
3. GameMode的重载修改,这是从4.14新增加进来改进,本来你只能为特定的某个Map配置好GameModeClass,但是现在GameInstance允许你重载它的PreloadContentForURL、CreateGameModeForURL和OverrideGameModeClass方法来hook改变这一流程。
4. OnlineSession的管理,这部分逻辑跟网络的机制有关(到时候再详细介绍),目前可以简单理解为有一个网络会话的管理辅助控制类。
而GameInstance是在GameEngine里创建的。
2. SaveGame
得益于UObject的序列化机制,现在你只需要继承于USaveGame,并添加你想要的那些属性字段,然后这个结构就可以序列化保存下来的。
而UGameplayStatics作为暴露给蓝图的接口实现部分,其内部的实现是:
参考链接:《InsideUE4》GamePlay架构(九)GameInstance - 知乎 (zhihu.com)