Files
loneseDocument/Content/Blueprints/WBP_InventoryView.md
meishibiezb 29a3f77908 init
2026-06-04 21:44:13 +08:00

3.3 KiB
Raw Blame History

WBP_InventoryView

基本信息

  • 类型: Widget Blueprint (UserWidget)
  • 父类: UserWidget
  • 源文件: /Game/Blueprints/UI/Item/WBP_InventoryView.WBP_InventoryView
  • 模块: Content

功能概述

WBP_InventoryView 是物品列表显示 Widget持有 BP_InventoryComp 组件的引用,负责将库存中的物品视图列表渲染到 UI。通过 UpdateListItems 函数刷新列表显示,使用 WBP_ItemViewBox 作为单个物品视图框的子 Widget。

设计用意

WBP_InventoryView 是物品系统和 UI 系统之间的桥梁。它通过 Comp 变量引用 BP_InventoryComp从中读取 ViewCache 获取物品视图数据,然后渲染到 UI 列表。通过监听 Comp 的 OnViewChanged 委托它能在库存变化时自动刷新显示无需手动触发更新。这种设计将数据层BP_InventoryComp和显示层WBP_InventoryView完全解耦。

职责范围

WBP_InventoryView 负责显示物品列表 UI、监听库存变化并自动刷新、以及提供物品交互的入口。物品数据管理由 BP_InventoryComp 负责,物品存储由 UDefaultContainer 负责。

项目内依赖

依赖项 关系 源文件
BP_InventoryComp 引用 (Comp) /Game/Blueprints/Playground/BP_InventoryComp
FItemView 显示数据 Item 插件
WBP_ItemViewBox 子 Widget /Game/Blueprints/UI/Item/WBP_ItemViewBox

对外接口

  • 蓝图函数
    • UpdateListItems() -- 刷新物品列表显示,从 Comp (BP_InventoryComp) 的 ViewCache 读取 FItemView 数据并更新 UI 列表
  • 蓝图变量(均为 is_instance_editable
    • Bo (bool) -- 布尔标志位,用于控制 UI 显示/隐藏或其他状态
    • Comp (BP_InventoryComp_C*) -- 目标库存组件引用,指向要显示的 BP_InventoryComp 实例。UI 从此组件的 ViewCache 读取物品数据
  • 通过 Comp 变量访问的 BP_InventoryComp 接口
    • ViewCache (TArray) -- 物品视图缓存,包含 ItemID、ItemType、ItemName、ItemDescription、Icon、ItemDataText
    • OnViewChanged (动态多播委托) -- 绑定此委托实现库存变化时自动调用 UpdateListItems
    • CreateItemInternal -- 可用于触发物品创建(通常不直接从此 Widget 调用)
  • EventGraph:含 5 个事件和 8 个节点

使用方法

  • 作为 UMG UserWidget被 BP_Hud 的 InvView 变量引用(类型为 WBP_InventoryView_C*
  • 设置 Comp 变量指向目标 Actor 上的 BP_InventoryComp 实例,建立 UI 到数据的绑定
  • 在 EventGraph 中绑定 Comp.OnViewChanged 委托,每次库存变化时自动调用 UpdateListItems 刷新列表
  • UpdateListItemsComp.ViewCache 读取 FItemView 数组,遍历创建 WBP_ItemViewBox 子 Widget 填充列表
  • WBP_ItemViewBox 作为单个物品的视图框,显示物品图标、名称、描述等信息
  • Bo 布尔变量用于控制 ListView 的条件显示(如空库存时隐藏列表)
  • 物品系统的数据流向UDefaultContainer (存储) -> BP_InventoryComp (管理+ViewCache) -> WBP_InventoryView (显示)

用例

  • BP_Hud 的 InvView 变量引用,作为物品栏 UI 界面
  • 通过 Comp 变量绑定 BP_InventoryComp显示玩家或掉落物的物品列表
  • 使用 WBP_ItemViewBox 作为子 Widget 渲染单个物品视图