Files
loneseDocument/Source/lonese/AMyPlayerController.md
meishibiezb 29a3f77908 init
2026-06-04 21:44:13 +08:00

3.1 KiB
Raw Permalink Blame History

AMyPlayerController

基本信息

  • 类型: UCLASS
  • 父类: APlayerController
  • 源文件: Source/lonese/MyPlayerController.h
  • 模块: lonese

功能概述

AMyPlayerController 是自定义 PlayerController提供三种行为GetOwnedPawnGetPawn 的蓝图包装、CalcCamera 覆写(调用 AActor::CalcCamera 以禁用内置视口目标混合、AcknowledgePossession 覆写(触发 OnClientPossessFinished BlueprintImplementableEvent供蓝图实现 Possess 后逻辑)。

设计用意

作为 C++ 与蓝图之间的桥梁。CalcCamera 覆写阻止默认摄像机系统干扰 ACameraPawn 的工作。OnClientPossessFinished 提供蓝图钩子,满足 Possess 后初始化(如 UI 设置、游戏性逻辑)的常见需求。

职责范围

PlayerController 的自定义层:禁用默认摄像机混合计算、提供蓝图 Possess 事件通知。不实现摄像机逻辑(委托给 ACameraPawn 通过视口目标机制处理)。

项目内依赖

依赖项 关系 源文件
(无) 不依赖任何项目内类,仅引用引擎头文件

对外接口

C++ / BlueprintUFUNCTION

  • GetOwnedPawn() -> APawn* (BlueprintCallable) — 返回当前控制的 Pawn。对 APlayerController::GetPawn() 的蓝图友好包装。

BlueprintUFUNCTIONBlueprintImplementableEvent

  • OnClientPossessFinished(APawn* P) — 当 Possess 完成时由 C++ 层触发的蓝图事件。在 AcknowledgePossession 中调用,参数为被 Possess 的 Pawn。蓝图可覆写此事件实现 Possess 后初始化逻辑(如 UI 设置、状态重置)。

C++(覆写基类)

  • CalcCamera(float DeltaTime, FMinimalViewInfo& OutResult) — 覆写 APlayerController::CalcCamera调用 AActor::CalcCamera 以禁用内置视口目标混合viewport blending确保 ACameraPawn 的视口目标设置不被干扰。
  • AcknowledgePossession(APawn* P) — 覆写 APlayerController::AcknowledgePossession在调用 Super 后触发 OnClientPossessFinished 蓝图事件。

使用方法

  • 类声明:Source/lonese/MyPlayerController.h:13-29
  • GetOwnedPawn 实现:Source/lonese/MyPlayerController.cpp:6-8 — 调用并返回 GetPawn()
  • BeginPlay 实现:Source/lonese/MyPlayerController.cpp:11-13 — 仅调用 Super。
  • CalcCamera 覆写:Source/lonese/MyPlayerController.cpp:16-18 — 调用 AActor::CalcCamera 禁用摄像机混合。
  • AcknowledgePossession 覆写:Source/lonese/MyPlayerController.cpp:21-24 — Super 后触发 OnClientPossessFinished。

用例

  • BP_TestCtl — 项目玩家控制器蓝图,继承自 AMyPlayerController在蓝图中实现 OnClientPossessFinished 事件处理 Possess 完成后逻辑,并定义 SetupControllingPawn 自定义函数处理控制权切换。
    • Document/Content/Blueprints/BP_TestCtl.md:5(父类为 AMyPlayerController
    • Document/Content/Blueprints/BP_TestCtl.md:10,13(实现 OnClientPossessFinished利用禁用摄像机计算特性
    • Document/Content/Blueprints/_relationships.md:8,38(输入管线中的角色)