This commit is contained in:
meishibiezb
2026-06-04 21:37:53 +08:00
parent b0d2a0e2e7
commit 29a3f77908
63 changed files with 4068 additions and 1 deletions

View File

@@ -0,0 +1,45 @@
# 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`(输入管线中的角色)