69 lines
4.0 KiB
Markdown
69 lines
4.0 KiB
Markdown
# 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<ACameraPawn>)— 分离式摄像机类
|
||
|
||
**继承自 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,作为玩家默认角色 |
|