本文主要是介绍UE Gameplay 框架总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
各个模块
GameInstance(游戏实例)
- 实例里的数据不会随着关卡的切换而消失。
- 作用是为游戏保存临时的全局数据(并不是所有的全局变量都存在GameInstance中,如玩家的信息应该存在PlayerState,游戏的一些信息存在GameState),或者自定义需要在全局使用的逻辑(慎重,GameInstance 的臃肿会导致卡顿)。
- 通常情况下一个Game中应该只有一个GameInstance(UE也是提供了多个GameInstance协同的扩展的,但是一次Game只能有一个GameInstance生效)
- GameInstance的生命周期就是从游戏进程启动到游戏进程结束
GameInstance主要处理:
- UWorld、ULevel之间的切换
- 全局配置
- GameMode的切换
GameMode (游戏规则)
- 仅在当前Level生效,一个Level一次只能对应一个GameMode,但是一个GameMode可以用在多个Level中
- 仅存在服务器中,客户端没有
GameMode主要处理:
- Class登记:记录GameMode中各种类的信息
- Spawn:创建Pawn和PlayerController等
- 游戏进度:游戏暂停重启的逻辑
- 过场动画逻辑
- 多人游戏的步调同步
DefaultPawn (默认Pawn)
- 自带DefualtPawnMovement、CollisionComponent、StaticMeshCompnent三件套(Pawn没有这些,Pawn提供了接口没有具体实现)
- 服务端和客户端都存在一份,同时保持同步。
- 在 GameMode 中修改。
DefaultPawn主要处理:
- 提供基础的操作,保证Game运行
HUD
- 实现一些简单的界面元素(文本,点),复杂的要使用UMG,但是HUD开销更小
- 只存在于客户端
PlayerController
- 拥有 Pawn 并设置其行为规则
- 服务器上拥有所有玩家的PlayerController,而本地客户端则只有当前玩家的 PlayerController 。
- 关联了客户端和服务端,通过该类,客户端可以向服务端发送请求
PlayerController 主要处理:
- Camera管理
- Input输入响应
- UPlayer关联
- HUD显示
- Level切换
- Voice音源监听
GameState
- 数据的全局管理(用于存储游戏相关数据)
- 服务端和客户端都存在一份,它包含要复制到游戏中的每个客户端的信息
- 通常用来保持数据的同步,也可将其中的部分数据设置为不同步。
GameState主要处理:
- 保存游戏数据,如任务进度,游戏活动等。
PlayerState
- 数据的全局管理(用于存储角色相关数据)
- 该类需要通过 PlayerController 来访问
- 所有玩家的 PlayerState存在于所有机器上(与 PlayerController 不同),并且可以将数据从服务器复制到客户端以保持同步
- PlayerState的生命周期为一整个Level的生命周期
PlayerState 主要处理:
- 保存玩家数据,客户端可以存在多个PlayerState对象,不同的PlayerState保存不同玩家的状态
这篇关于UE Gameplay 框架总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!