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

4.0 KiB
Raw Blame History

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

  • DefaultMappingUInputMappingContext*)— 默认输入映射上下文
  • MoveAction / RunAction / CrouchAction / CameraMoveAction / CameraZoomAction / CameraResetAction / CameraRotateActionUInputAction*)— 各输入动作
  • CameraActorClassTSubclassOf— 分离式摄像机类

继承自 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作为玩家默认角色