GamePlay概论与打包和批处理脚本
GamePlay简介与创建项目
- GamePlay框架:用于设计游戏规则,组织和管理游戏核心逻辑、规则以及交互的一套结构化体系。
- Default Pawn Class:定义角色行为逻辑,接收玩家控制器的输入,一般都写在这个类中
- HUD Class:告诉游戏玩家目前的状态,HUD主要用于管理UUserWidget
- Player Controller Class:主要控制Pawn的Actor,本质上就是代表人类的意愿
- 相机管理
- 输入系统
- Player Controller与Player的关联
- 管理HUD
- 网络语言通话功能
- Game State Class:游戏层面的数据变化,例如:游戏是否开始了,阵营得分,存放所有玩家的PlayerState。随关卡的生成销毁
- Player State Class:用于存放每个玩家在游戏中状态的类,玩家自己的数据。随关卡的生成销毁
- Spectator Class:Spectator类通常指的是游戏中的观战者模式相关的类

- 虚幻引擎3C概念:Controller、Camera、Character:
逻辑闭环
- Controller:
用于接收来自输入设备的输入信号,Controller并不直接控制角色的物理运动,而是通过与对应的Pawn(可能是Character类型)进行交互,发送命令和更新状态
。主要用于控制Pawn,通过输入信号又可以控制玩家角色,然后配合相机,从游戏获取信息,控制Character的反馈。
- Camera:实时为玩家显示游戏中画面。
设置Camera与Controller配合,可以实现第一人称视角(FPV)、第三人称视角(TPV)和其他多种视角模式,同时也可以调整相机的视野、远近裁剪面、缩放等因素,以增强玩家的游戏体验。
- Character:游戏中代表的玩家或者非玩家实体对象(AI控制)。
Character 类通常是从 Pawn 类派生而来,Character通常带有骨骼动画系统支持,能够进行复杂的动作表现,并且与物理系统相结合,进行运动和碰撞检测。
综上所述,“3C”构成了虚幻引擎中角色控制和视觉表达的核心要素,它们相互协同工作,共同实现了游戏中角色的交互行为及玩家的视觉感知。
模版代码:Character初始化构造
- GetCapsuleComponent()->
InitCapsuleSize
(42.f, 96.0f);
- 初始化胶囊体的宽高度
- 头文件:#include “Components/CapsuleComponent.h”
- 让相机不做旋转
bUseControllerRotationPitch = false;
bUseControllerRotationYaw = false;
bUseControllerRotationRoll = false;
- GetCharacterMovement()->
bOrientRotationToMovement
= true;
- 角色在输入方向时,进行旋转
- 头文件:#include “GameFramework/CharacterMovementComponent.h”
- 如果是这里是false,就会反方向行走

- GetCharaterMovement()->
RotationRate
= FRotator(0.0f, 500.0f, 0.0f);
GetCharacterMovement()->JumpZVelocity = 700.f;
GetCharacterMovement()->AirControl = 0.35f;
GetCharacterMovement()->MaxWalkSpeed = 500.f;
GetCharacterMovement()->MinAnalogWalkSpeed = 20.f;
GetCharacterMovement()->BrakingDecelerationWalking = 2000.f;
- CameraBoom =
CreateDefaultSubobject
<USpringArmComponent>(TEXT(“CameraBoom”));
- 创建一个相机臂组件
- 头文件:#include “GameFramework/SpringArmComponent.h”
CreateDefaultSubobject
:这是一个模版函数
template<class TReturnType>
TReturnType* CreateDefaultSubobject(FName SubobjectName, bool bTransient = false)
{
UClass* ReturnType = TReturnType::StaticClass();
return static_cast<TReturnType*>(CreateDefaultSubobject(SubobjectName, ReturnType, ReturnType, true, bTransient));
}
- 相机臂就可以理解为一个自拍杆,这样就可以查看角色的最佳角度
CameraBoom->SetupAttachment(RootComponent);
CameraBoom->TargetArmLength = 400.0f;
CameraBoom->bUsePawnControlRotation = true;
- FollowCamera = CreateDefaultSubobject(TEXT(“FollowCamera”));
- 创建相机组件
- 头文件:#include “Camera/CameraComponent.h”
FollowCamera->SetupAttachment(CameraBoom, USpringArmComponent::SocketName);
FollowCamera->bUsePawnControlRotation = false;
模版代码:增强输入逻辑流程
- 增强输入系统是一个插件,首先我们就得在项目中添加增强输入这个插件

- 然后我们要区分行为与映射上下文
UInputMappingContext
:映射上下文,理解是管理行为的管理员
UInputAction
:理解为行为操作
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Input, meta = (AllowPrivateAccess = "true"))
class UInputMappingContext* DefaultMappingContext;
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Input, meta = (AllowPrivateAccess = "true"))
class UInputAction* JumpAction