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

3.6 KiB
Raw Permalink Blame History

BP_TestCtl

基本信息

  • 类型: Blueprint (PlayerController)
  • 父类: AMyPlayerController
  • 源文件: /Game/Blueprints/BP_TestCtl.BP_TestCtl
  • 模块: Content/Blueprints

功能概述

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++ 源码

外部视角

BP_TestCtl 是 AMyPlayerController 的蓝图子类,从外部调用者视角:

继承自 AMyPlayerController 的公开接口

  • GetOwnedPawn()BlueprintCallable— 获取当前控制器拥有的 Pawn 实例C++ 默认实现
  • OnClientPossessFinished(APawn* P)BlueprintImplementableEvent— Possess 完成时的客户端初始化事件,蓝图可选择性实现

BP_TestCtl 新增

  • SetupControllingPawnEventGraph 中定义的自定义函数)— 控制权切换后调用,用于初始化被控制 Pawn 的状态。无公开 BlueprintCallable 标注,在蓝图层内部调用

EventGraph 事件

事件 类型 触发时机 行为
事件开始运行 原生覆盖 (BeginPlay) 控制器创建时由引擎自动触发 延迟 0.2 秒 → 显示鼠标光标 → 设置视图目标为自引用的 Possessed Pawn → 获取 HUD → Cast 到 BP_Hud → 获取 CommandRouter → 注册内部路由端点
事件OnClientPossessFinished 原生覆盖 客户端 Possess 流程完成后 调用 SetupControllingPawn → 获取 BP_Controller 组件 → 调用 ResetControllerLocation
UpdateInvComp_RPCReplicated 自定义事件 (RPC) 客户端库存变化时 接收 BP_InventoryComp 引用 → 调用服务器端 UpdateViewCache, 客户端 UpdateViewCacheRPC

外部交互方式

  • 引擎通过 GameMode 的 PlayerControllerClass 设置自动创建实例BP_TestMode 中配置)
  • C++ 层通过 Cast<AMyPlayerController> 获取引用
  • 蓝图层通过 GetPlayerController 节点获取

使用方法

BP_TestCtl 在项目中的典型调用流程:

  • 游戏初始化流程 — BP_TestMode 将 PlayerControllerClass 设为 BP_TestCtl → 引擎自动实例化 → 触发 BeginPlay → 延迟后显示鼠标光标、设置视图目标、从 HUD 获取 CommandRouter 并注册端点
  • Possess 完成流程 — 引擎 Possess Pawn 完成后 → 触发 OnClientPossessFinished → SetupControllingPawn → 获取 BP_ControllerComp → 调用 ResetControllerLocation 重置摄像机
  • 库存同步流程 — 客户端库存变化 → UpdateInvComp_RPCReplicated 触发 → 服务器端更新 ViewCache → 客户端同步刷新

用例

引用方 路径 用途
BP_TestMode /Game/Blueprints/BP_TestMode 设为 PlayerControllerClass游戏启动时自动实例化
BP_Barrel /Game/Blueprints/Playground/BP_Barrel 引用 BP_TestCtl 用于木桶交互