六一的部落格


关关难过关关过,前路漫漫亦灿灿。




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,实现了游戏角色相应功能:

  1. 增加了碰撞检测功能

    胶囊组件 CapsuleComponent,负责与外界的物理交互
  2. 增加了骨骼网格体组件 Mesh,可以设置模型和动画
  3. 增加了角色移动组件 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的派生类



总结


  1. 有三种生存期,Actor对象的生存期,关卡生存期,和游戏实例生存期
  2. 游戏包含多个关卡,关卡类型为AGameModeBase,AGameModeBase对象负责创建所有关卡基本对象
    • APawn
    • APlayerController
    • ASpectatorPawn
    • APlayerState
    • AGameState
    • AHUD
  3. 打开关卡时,GameModeBase对象被创建,其创建关卡基本对象
  4. 整个游戏中,在所有关卡之上,有UGameInstance对象

虚幻引擎主要类概述



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,实现了游戏角色相应功能:

  1. 增加了碰撞检测功能

    胶囊组件 CapsuleComponent,负责与外界的物理交互
  2. 增加了骨骼网格体组件 Mesh,可以设置模型和动画
  3. 增加了角色移动组件 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的派生类



总结


  1. 有三种生存期,Actor对象的生存期,关卡生存期,和游戏实例生存期
  2. 游戏包含多个关卡,关卡类型为AGameModeBase,AGameModeBase对象负责创建所有关卡基本对象
    • APawn
    • APlayerController
    • ASpectatorPawn
    • APlayerState
    • AGameState
    • AHUD
  3. 打开关卡时,GameModeBase对象被创建,其创建关卡基本对象
  4. 整个游戏中,在所有关卡之上,有UGameInstance对象