gameplay主要类概述
2024年1月8日 2025年4月20日
world, actor和component
世界场景由actor对象组成, actor对象由各种component组成
控制器: APawn类和APlayerController类
APawn类
派生自AActor, 实现了对actor对象的控制
接收来自输入设备的信息, 使actor对象做出相应动作
无视觉表示, 逻辑类
pawn就是棋子的意思, 如控制游戏角色前后左右移动, 通常通过APawn类完成
生存期与actor对象一致
在actor的基础上, 支持交互
APlayerController类
派生自AController, AController派生自AActor
生存期与关卡一致
如果游戏玩家可以控制多个actor对象, 则会通过APlayerController切换当前操作的actor对象, 或者不操作任何一个actor对象
采用组合(composite)模式, APawn作为APlayerController的组件
接收来自输入设备的信息, 通常使用APlayerController处理全局控制, 如关闭菜单, 关闭声音, 退出游戏等
关卡规则: AGameModeBase类
游戏规则, 针对关卡而言
支持各种设置, 且都有默认值: 包括游戏时长设置, 玩家和NPC个数, 团队分布, 玩家的重生机制等
在关卡编辑器的世界设置中, 可对game mode进行配置
-
使用默认值时, 显示为None
游戏角色: ACharacter类
派生自APawn, 实现了游戏角色相应功能:
- 增加了碰撞检测功能
胶囊组件capsule component, 负责与外界的物理交互 - 增加了骨骼网格体组件skeletal mesh, 可以设置模型和动画
- 增加了角色移动组件character movement, 控制角色的移动, 如速度, 跳跃高度等
在pawn的基础上, 支持骨骼网格体, 运动和碰撞
AI: AIController类
派生自AController
APawn既可以由玩家控制, 也可以由AI控制: 采用组合(composite)模式, APawn作为AIController的组件
在行为树中给出任务
HUD类
head up display
负责用户界面, 目前使用较少
虚幻引擎通过widget提供用户接口, 可以用HUD来管理widget
观察者: ASpectatorPawn类
观察者类
角色死亡时, 玩家所控制的pawn
通常情况下, 为flying camera, 可以设置其为黑白效果
玩家信息: APlayerState类
负责存储玩家的各种统计信息, 如击杀人数, 死亡次数
生存期与关卡一致
游戏信息: AGameState类
多人游戏逻辑使用
多人游戏中, game mode base存在于服务器端, 保存各种信息, 将游戏过程中的玩家信息传输给客户端
游戏: UGameInstance类
游戏实例类
会创建该类型的全局变量
一些全局信息, 如和关卡无关的图形设置, 声音设置, 及其他直接加载到关卡的信息, 需要作为全局信息保存
可以创建game instance的派生类, 包含保存以上信息的变量
在项目设置中, 配置使用game instance的派生类
总结
- 有三种生存期, actor对象的生存期, 关卡生存期, 和游戏实例生存期
- 游戏包含多个关卡, 关卡类型为AGameModeBase, AGameModeBase对象负责创建所有关卡基本对象
- APawn
- APlayerController
- ASpectatorPawn
- APlayerState
- AGameState
- AHUD
- APawn
- 打开关卡时, game mode base对象被创建, 其创建关卡基本对象
- 整个游戏中, 在所有关卡之上, 有UGameInstance对象