4.0 KiB
4.0 KiB
BP_TestChar
基本信息
- 类型: Blueprint (Character)
- 父类: AMyCharacter
- 源文件: /Game/Blueprints/BP_TestChar.BP_TestChar
- 模块: Content/Blueprints
功能概述
BP_TestChar 是玩家主角的蓝图实现,继承 C++ 的 AMyCharacter。它通过添加 CharacterControl 插件的路由组件来扩展角色能力,在蓝图层面组合移动、指令路由和摄像机控制。
设计用意
AMyCharacter 在 C++ 层提供了移动和摄像机 Pawn 创建的基础能力。BP_TestChar 在蓝图层面通过组件化的方式组装角色功能:添加 UCommandRouterComponent 将角色变成指令路由中心,添加各种 ICommandEndpoint 组件处理不同类型的指令。作为项目的核心 Pawn,它是指令系统和角色能力的"组装层"——新功能通过添加新的端点组件来扩展,而非修改 C++ 代码。
职责范围
BP_TestChar 是角色的蓝图配置层,负责添加并配置 CharacterControl 路由组件和端点组件,实现角色重叠、Tick 等蓝图级逻辑。移动逻辑由 AMyCharacter C++ 层处理,摄像机逻辑由 ACameraPawn 负责。
项目内依赖
| 依赖项 | 关系 | 源文件 |
|---|---|---|
| AMyCharacter | 父类 | Source/lonese/MyCharacter.h |
| ACameraPawn | 间接(CameraActorClass) | /Game/Blueprints/BP_CameraPawn |
| UCommandRouterComponent | 组件 | CharacterControl 插件 |
| BP_UniversalEndpointComp | 组件 | /Game/Blueprints/Component/BP_UniversalEndpointComp |
| BP_MoveInput | 组件 | /Game/Blueprints/Component/BP_MoveInput |
| BP_ControllerComp | 组件 | /Game/Blueprints/Component/BP_ControllerComp |
| BP_SayHello | 组件 | /Game/Blueprints/Component/BP_SayHello |
外部视角
BP_TestChar 是 AMyCharacter 的蓝图子类,从外部调用者视角:
继承自 AMyCharacter 的配置属性(BlueprintReadOnly)
DefaultMapping(UInputMappingContext*)— 默认输入映射上下文MoveAction/RunAction/CrouchAction/CameraMoveAction/CameraZoomAction/CameraResetAction/CameraRotateAction(UInputAction*)— 各输入动作CameraActorClass(TSubclassOf)— 分离式摄像机类
继承自 AMyCharacter 的操作函数(蓝图可调用)
Move(FInputActionValue)— 移动输入处理BeginRun/StopRun(FInputActionValue)— 跑步状态切换BeginCrouch/StopCrouch(FInputActionValue)— 蹲伏状态切换IsRunning()/IsCrouching()(返回 bool)— 状态查询函数
BP_TestChar 新增
- 无自定义变量或公开函数。所有扩展能力通过组件化实现:4 个端点组件(UniversalEndpointComp/MoveInput/ControllerComp/SayHello)+ 1 个 UCommandRouterComponent
- CameraActorClass 在 Class Defaults 中设为 BP_CameraPawn
EventGraph 事件
| 事件 | 类型 | 触发时机 | 行为 |
|---|---|---|---|
事件开始运行 |
原生覆盖 (BeginPlay) | 角色生成时由引擎自动触发 | 预留(当前无连线逻辑) |
事件Actor开始重叠 |
原生覆盖 (OnActorBeginOverlap) | 角色与其他 Actor 碰撞时 | 预留(当前无连线逻辑) |
事件Tick |
原生覆盖 | 每帧 | 预留(当前无连线逻辑) |
使用方法
BP_TestChar 在项目中的典型调用流程:
- 游戏初始化流程 — BP_TestMode 将 DefaultPawnClass 设为 BP_TestChar → 引擎在游戏启动时自动生成角色 → 初始化 4 个端点组件 + UCommandRouterComponent → 触发 BeginPlay
- 输入处理流程 — 玩家输入 → Enhanced Input 系统 → AMyCharacter::SetupPlayerInputComponent 绑定 Move/BeginRun/StopRun/BeginCrouch/StopCrouch → C++ 层处理移动和状态切换
- 指令路由流程 — 外部指令 → UCommandRouterComponent → 路由到对应端点组件(如 BP_ControllerComp 处理摄像机控制、BP_MoveInput 处理移动指令)
用例
| 引用方 | 路径 | 用途 |
|---|---|---|
| BP_TestMode | /Game/Blueprints/BP_TestMode |
设为 DefaultPawnClass,作为玩家默认角色 |