48 lines
2.7 KiB
Markdown
48 lines
2.7 KiB
Markdown
# BP_Hud
|
||
|
||
## 基本信息
|
||
- **类型**: Blueprint (HUD)
|
||
- **父类**: HUD
|
||
- **源文件**: /Game/Blueprints/BP_Hud.BP_Hud
|
||
- **模块**: Content
|
||
|
||
## 功能概述
|
||
BP_Hud 是项目的 HUD 蓝图,管理三个 UI 窗口的引用:物品栏窗口(InvView,类型 WBP_InventoryView)、库存窗口(InventoryWindow)和提示窗口(HintWindow)。作为 UI 系统的"根"容器,持有并显示各种 Widget。
|
||
|
||
## 设计用意
|
||
BP_Hud 将 UI 管理集中在 HUD 中,而不是分散在各个 Widget 或 Controller 中。它将物品视图、库存窗口和提示窗口都集中持有在一个地方,作为 UI 系统的入口点,方便其他系统通过 HUD 访问和操作 UI。
|
||
|
||
## 职责范围
|
||
BP_Hud 负责持有主要 UI 窗口引用并作为 UI 系统的入口点。具体的 UI 逻辑(物品列表渲染、窗口交互、提示显示)由各 Widget 自身负责,BP_Hud 仅提供引用的集中管理。
|
||
|
||
## 项目内依赖
|
||
| 依赖项 | 关系 | 源文件 |
|
||
|--------|------|--------|
|
||
| WBP_InventoryView | 引用 (InvView) | /Game/Blueprints/UI/Item/WBP_InventoryView |
|
||
| WBP_Window | 引用 (InventoryWindow, HintWindow) | /Game/Blueprints/UI/WBP_Window |
|
||
|
||
## 对外接口
|
||
- **蓝图可编辑变量**(均为 Instance Editable):
|
||
- `InvView` (WBP_InventoryView_C*) -- 物品栏视图 Widget 引用,类型为 WBP_InventoryView
|
||
- `InventoryWindow` (WBP_Window_C*) -- 库存窗口 Widget 引用,类型为 WBP_Window
|
||
- `HintWindow` (WBP_Window_C*) -- 提示窗口 Widget 引用,类型为 WBP_Window
|
||
- **继承自 AHUD 的标准接口**:
|
||
- `DrawHUD()` -- HUD 绘制入口
|
||
- `ReceiveDrawHUD(SizeX, SizeY)` -- 蓝图可覆盖的 UI 绘制事件
|
||
- `GetOwningPlayerController()` -- 获取所属的 PlayerController
|
||
- HUD 生命周期事件(BeginPlay、EndPlay 等)
|
||
- **EventGraph**:含 4 个事件和 39 个节点,负责 Widget 的创建和初始化逻辑
|
||
|
||
## 使用方法
|
||
- 在 BP_TestMode 中设置为 `HUDClass`,每次 PlayerController 初始化时自动创建
|
||
- 在蓝图 EventGraph 中创建和初始化三个 Widget:`InvView`(物品栏)、`InventoryWindow`(库存窗口)、`HintWindow`(提示窗口)
|
||
- 三个 Widget 变量为 Instance Editable,可在编辑器中替换为不同的 Widget 子类
|
||
- 其他系统通过 `PlayerController->GetHUD()` 获取 BP_Hud 实例,再通过变量访问各 Widget
|
||
- 作为 UI 系统的"根"容器,所有主要 UI 窗口的引用集中在此处管理
|
||
|
||
## 用例
|
||
- BP_TestMode 的 `HUDClass`,玩家进入关卡时生成
|
||
- `InvView` 变量引用 WBP_InventoryView,物品系统通过此引用更新物品列表 UI
|
||
- `InventoryWindow` 变量引用 WBP_Window,库存窗口的显示和隐藏通过此引用控制
|
||
- `HintWindow` 变量引用 WBP_Window,提示信息的显示通过此引用控制
|