虚幻引擎主要类概述
2024年1月8日 2024年1月18日
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个数,团队分布,玩家的重生机制等
在关卡编辑器的世界设置中,可对GameMode进行配置
-
使用默认值时,显示为None
游戏角色: ACharacter类
派生自APawn,实现了游戏角色相应功能:
- 增加了碰撞检测功能
胶囊组件 CapsuleComponent,负责与外界的物理交互 - 增加了骨骼网格体组件 Mesh,可以设置模型和动画
- 增加了角色移动组件 CharacterMovement,控制角色的移动,如速度,跳跃高度等
在Pawn的基础上, 支持骨骼网格体, 运动和碰撞
AI: AIController类
派生自AController
APawn既可以由玩家控制,也可以由AI控制: 采用组合(Composite)模式,APawn作为AIController的组件
在行为树中给出任务
HUD类
Head Up Display
负责用户界面,目前使用较少
虚幻引擎通过Widget提供用户接口,可以用HUD来管理Widget
观察者: ASpectatorPawn类
观察者类
角色死亡时,玩家所控制的Pawn
通常情况下,为flying camera,可以设置其为黑白效果
玩家信息: APlayerState类
负责存储玩家的各种统计信息,如击杀人数,死亡次数
生存期与关卡一致
游戏信息: AGameState类
多人游戏逻辑使用
多人游戏中,GameModeBase存在于服务器端,保存各种信息,将游戏过程中的玩家信息传输给客户端
游戏: UGameInstance类
游戏实例类
会创建该类型的全局变量
一些全局信息,如和关卡无关的图形设置,声音设置,及其他直接加载到关卡的信息,需要作为全局信息保存
可以创建GameInstance的派生类,包含保存以上信息的变量
在项目设置中,配置使用GameInstance的派生类
总结
- 有三种生存期,Actor对象的生存期,关卡生存期,和游戏实例生存期
- 游戏包含多个关卡,关卡类型为AGameModeBase,AGameModeBase对象负责创建所有关卡基本对象
- APawn
- APlayerController
- ASpectatorPawn
- APlayerState
- AGameState
- AHUD
- APawn
- 打开关卡时,GameModeBase对象被创建,其创建关卡基本对象
- 整个游戏中,在所有关卡之上,有UGameInstance对象