4.2 KiB
4.2 KiB
BP_TestChar
基本信息
- 类型: Blueprint (Actor)
- 父类: AMyCharacter
- 源文件: /Game/Blueprints/BP_TestChar.BP_TestChar
- 模块: Content
功能概述
BP_TestChar 是玩家主角的蓝图实现,继承 C++ 的 AMyCharacter。它通过添加 CharacterControl 插件的路由组件来扩展角色能力,在蓝图层面组合移动、指令路由和摄像机控制。
设计用意
AMyCharacter 在 C++ 层提供了移动和摄像机 Pawn 创建的基础能力。BP_TestChar 在蓝图层面通过组件化的方式组装角色功能:添加 UCommandRouterComponent 将角色变成指令路由中心,添加各种 ICommandEndpoint 组件处理不同类型的指令。作为项目的核心 Pawn,它是指令系统和角色能力的"组装层"——新功能通过添加新的端点组件来扩展,而非修改 C++ 代码。
职责范围
BP_TestChar 是角色的蓝图配置层,负责添加并配置 CharacterControl 路由组件和端点组件,实现角色重叠、Tick 等蓝图级逻辑。移动逻辑由 AMyCharacter C++ 层处理,摄像机逻辑由 ACameraPawn 负责。
项目内依赖
| 依赖项 | 关系 | 源文件 |
|---|---|---|
| AMyCharacter | 父类 | /Game/Blueprints/BP_TestChar (C++ 继承) |
| 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 |
对外接口
- 继承自 AMyCharacter 的 BlueprintCallable 函数:
Move(const FInputActionValue& Value)-- 移动输入处理,供 EnhancedInput 绑定调用BeginRun(const FInputActionValue& Value)/StopRun(const FInputActionValue& Value)-- 奔跑切换BeginCrouch(const FInputActionValue& Value)/StopCrouch(const FInputActionValue& Value)-- 蹲伏切换IsRunning() const/IsCrouching() const-- 状态查询
- 继承自 AMyCharacter 的 BlueprintReadOnly 属性:
DefaultMapping(UInputMappingContext*) -- 默认输入映射上下文MoveAction,RunAction,CrouchAction,CameraMoveAction,CameraZoomAction,CameraResetAction,CameraRotateAction-- 各输入动作引用CameraActorClass(TSubclassOf) -- 摄像机 Pawn 类,设置为 BP_CameraPawn
- 身上的组件作为对外能力:
UCommandRouterComponent-- 指令路由中心,通过 RegisterEndpoint / InputCommand 接收和分发指令BP_UniversalEndpointComp-- 通用端点,对外暴露CommandReceivedDispatcher动态多播委托BP_MoveInput-- 移动端点,对外暴露CharMove(CharacterMovementComponent*) 变量BP_ControllerComp-- 摄像机控制端点,对外暴露MoveController、RotateController、ZoomCamera、ResetControllerLocation、TickFollowChar函数及摄像机配置参数BP_SayHello-- 测试端点,验证指令路由系统
使用方法
- 在 BP_TestMode 中设置为
DefaultPawnClass,作为项目的默认 Pawn - 在蓝图编辑器中添加 CharacterControl 路由和端点组件:
UCommandRouterComponent作为指令路由器,BP_UniversalEndpointComp、BP_MoveInput、BP_ControllerComp、BP_SayHello作为各类指令端点 - 通过父类 AMyCharacter 的
CameraActorClass属性指定 BP_CameraPawn 作为分离式摄像机 - 配置父类的 InputAction 属性(MoveAction、RunAction 等)连接 EnhancedInput 系统
- 各端点组件通过
EndpointState.InterestedTags配置关注的 GameplayTag,UCommandRouterComponent 的AutoRegisterEndpoints在 BeginPlay 时自动注册所有组件上的端点 - 指令链路:EnhancedInput -> UCommandInputComponent -> UCommandRouterComponent -> 匹配的端点组件
用例
- BP_TestMode 的
DefaultPawnClass,作为玩家进入关卡时的默认角色 - 身上挂载的
BP_UniversalEndpointComp、BP_MoveInput、BP_ControllerComp、BP_SayHello作为该角色的指令处理端点 CameraActorClass属性引用 BP_CameraPawn,角色被 Possess 时自动生成摄像机