2.9 KiB
2.9 KiB
BP_TestCtl
基本信息
- 类型: Blueprint (PlayerController)
- 父类: AMyPlayerController
- 源文件: /Game/Blueprints/BP_TestCtl.BP_TestCtl
- 模块: Content
功能概述
BP_TestCtl 是项目的玩家控制器蓝图实现,继承 C++ 的 AMyPlayerController。它实现了 OnClientPossessFinished 事件用于 Possess 完成后的初始化,并提供 SetupControllingPawn 自定义函数用于控制权切换后的 Pawn 设置。
设计用意
BP_TestCtl 利用 AMyPlayerController 的禁用摄像机计算特性(支持 ACameraPawn 分离式摄像机),在蓝图层面提供 Possess 完成后的客户端初始化和 Pawn 设置逻辑。作为一个薄蓝图层,它将 C++ 层的控制器能力暴露给蓝图系统进行配置和扩展。
职责范围
BP_TestCtl 负责 Possess 完成时的客户端初始化和控制权切换后的 Pawn 设置。摄像机计算由 C++ 层禁用(CalcCamera 空操作),角色移动由 AMyCharacter 负责,BP_TestCtl 不涉及这些底层逻辑。
项目内依赖
| 依赖项 | 关系 | 源文件 |
|---|---|---|
| AMyPlayerController | 父类 | C++ 源码 |
对外接口
- 继承自 AMyPlayerController 的 BlueprintCallable 函数:
GetOwnedPawn()-- 获取当前控制的 Pawn,返回 APawn*,供蓝图查询当前 Possess 目标
- 继承自 AMyPlayerController 的 BlueprintImplementableEvent 事件:
OnClientPossessFinished(APawn* P)-- 客户端 Possess 完成时调用,在 BP_TestCtl 的 EventGraph 中实现,客户端收到 Possess 确认后的初始化入口(EventGraph 中 event_count=3)
- 蓝图自定义函数:
SetupControllingPawn()-- 控制权切换后的 Pawn 设置函数,无参数,在 EventGraph 的 18 个节点中被调用
- 继承自 APlayerController 的标准接口:所有 APlayerController 的标准事件和函数均可用(如 OnPossess、OnUnPossess、GetPlayerViewPoint 等)
使用方法
- 在 BP_TestMode 中设置为
PlayerControllerClass,作为项目的默认玩家控制器 - 父类 AMyPlayerController 重写了
CalcCamera(空操作),禁用默认摄像机计算,配合 ACameraPawn 的分离式摄像机设计 - 父类 AMyPlayerController 重写了
AcknowledgePossession,在 Possess 确认后触发OnClientPossessFinished事件 OnClientPossessFinished在蓝图 EventGraph 中实现,用于客户端在 Possess 完成后的初始化逻辑SetupControllingPawn在控制权切换时调用,设置新的受控 Pawn 所需的配置(如 UI 绑定、输入上下文切换等)- 作为薄蓝图层,主要职责是将 C++ 层的控制器能力暴露给蓝图系统
用例
- BP_TestMode 的
PlayerControllerClass,每次玩家加入时实例化 OnClientPossessFinished事件连接客户端 Possess 完成的初始化流程SetupControllingPawn在角色切换时重新配置 Pawn 资源