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

46 lines
3.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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`(输入管线中的角色)