Files
loneseDocument/Content/Blueprints/BP_TestChar.md
meishibiezb a8bdf281ff update
2026-06-05 03:01:15 +08:00

69 lines
4.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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作为玩家默认角色 |