UE5中 Character、PlayerController、PlayerState、GameMode和GameState核心类之间的联动和分工·

1. GameMode 与 GameState

关系描述
  • GameMode:定义游戏规则和逻辑,控制游戏的开始、进行和结束。
  • GameState:存储和同步全局游戏状态,如得分、时间、胜利条件等。
联动方式
  • GameMode初始化GameStateGameMode在游戏开始时创建GameState实例,并将全局游戏规则和状态信息存储在GameState中。
  • GameMode更新GameStateGameMode根据游戏规则更新GameState中的数据,例如增加得分或触发游戏结束。
  • GameState同步数据GameState将全局状态数据同步到所有客户端,确保所有玩家看到一致的游戏状态。

2. GameMode 与 PlayerController

关系描述
  • GameMode:控制玩家生成和游戏规则。
  • PlayerController:管理玩家输入和交互逻辑。
联动方式
  • PlayerController生成GameMode在玩家加入游戏时生成PlayerController实例,并将其分配给玩家。
  • PlayerController调用GameModePlayerController可以通过GameMode执行游戏规则,例如请求生成角色或触发游戏事件。
  • GameMode控制PlayerControllerGameMode可以禁用或启用PlayerController的输入,例如在游戏结束时禁用玩家移动。

3. PlayerController 与 Character

关系描述
  • PlayerController:管理玩家输入和交互逻辑。
  • Character:代表玩家在游戏世界中的实体。
联动方式
  • Character生成PlayerController在游戏开始时生成Character实例,并将其与玩家绑定。
  • PlayerController控制CharacterPlayerController接收玩家输入并将其转化为Character的动作,例如移动、跳跃或攻击。
  • Character反馈状态Character将自身状态(如生命值、位置)反馈给PlayerController,以便更新玩家界面或触发事件。

4. PlayerController 与 PlayerState

关系描述
  • PlayerController:管理玩家输入和交互逻辑。
  • PlayerState:存储和同步玩家个性化数据,如得分、生命值、装备等。
联动方式
  • PlayerState初始化PlayerController在玩家加入游戏时初始化PlayerState实例,并将其与玩家绑定。
  • PlayerController更新PlayerStatePlayerController根据玩家行为更新PlayerState中的数据,例如增加得分或更新装备。
  • PlayerState同步数据PlayerState将玩家数据同步到所有客户端,确保其他玩家看到一致的玩家状态。

5. GameState 与 PlayerState

关系描述
  • GameState:存储和同步全局游戏状态。
  • PlayerState:存储和同步玩家个性化数据。
联动方式
  • GameState汇总PlayerStateGameState可以汇总所有玩家的PlayerState数据,例如计算团队得分或排名。
  • PlayerState影响GameStatePlayerState中的数据变化(如玩家得分)可以触发GameState的更新,例如检查胜利条件。
  • 数据同步GameStatePlayerState中的数据通过网络复制同步到所有客户端,确保游戏状态和玩家状态的一致性。

6. 综合联动关系

  • GameMode 作为游戏规则的核心,控制GameStatePlayerController的生成与逻辑。
  • PlayerController 作为玩家与游戏世界的桥梁,管理CharacterPlayerState的行为与状态。
  • GameStatePlayerState分别管理全局和玩家的数据,并通过网络复制确保数据一致性。

示例:

此处以玩家之间建立组织的逻辑实现作为样例来表现Character、PlayerController、PlayerState、GameMode和GameState核心类之间的联动分工

步骤细节:

玩家的输入处理

PlayerController:负责处理玩家输入

但是Character类也能负责处理玩家输入

Character类蓝图处理逻辑

**PlayerController**类蓝图处理逻辑

有关将F输入放在Character优点与缺点

优点与缺点

优点
  • 直接访问Camera组件Character类可以直接访问其Camera组件,无需通过PlayerController
  • 逻辑集中 :将与角色行为相关的输入逻辑集中在Character类中,便于管理和维护。
缺点
  • 职责不清Character类通常用于实现角色行为,将输入逻辑放在其中可能违反职责分离原则。
  • 多人游戏复杂性 :在多人游戏中,Character类可能需要额外的网络同步逻辑,增加代码复杂性。

显然对比以上蓝图可见**PlayerController**类方法连线较多,函数调用开销也就较大,但是可通过缓存来解决此类问题如下图

因此在个人开发中,如果 PlayerController 类功能繁多,可以适当 根据个人需求将简单输入事件放入Character中,并不影响实现,但是在多人合作开发中,建议按照UE的功能职责划分将输入处理放入PlayerController 类中。

总结

CharacterPlayerControllerPlayerStateGameModeGameState之间通过紧密的联动关系,共同实现游戏的功能和规则。GameMode定义规则,GameState存储全局状态,PlayerController管理玩家输入,PlayerState存储玩家数据,Character代表玩家实体。它们相互协作,确保游戏逻辑的正确性和数据的一致性。

相关推荐
avi91112 小时前
UE4-UE5虚幻引擎,前置学习二--------UI反射器,略屌
ue5·ue4·虚幻·editor代码反射
金米kk1 天前
Unreal Engine 5(虚幻引擎)动画制作快捷键大全
ue5·游戏引擎·虚幻
avi91111 天前
UE4-UE5虚幻引擎,前置学习一--Console日志输出经常崩溃,有什么好的解决办法
ue5·ue4·虚幻·日志
远离UE42 天前
UE5 RVT 制作场景交互 - 遮罩
ue5
lcw_lance3 天前
UE5与U3D引擎对比分析
ue5·数字孪生
妙为3 天前
要在Unreal Engine 5(UE5)中实现角色打击怪物并让怪物做出受击反应,
ue5·敌人受击效果·打击感
爱编程的鱼4 天前
UE5.4分层渲染设置
前端·ue5
Dawn·张4 天前
UE小:UE5.5 PixelStreamingInfrastructure 使用时注意事项
ue5
Maya动画技术7 天前
ue5.5崩溃报gpu错误快速修复注册表命令方法
ue5·ue5.5崩溃报gpu错误