# 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,提示信息的显示通过此引用控制