我怎么显示物品框中的极品属性
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-06-12 12:04:16 |
👁️ 阅读: 2
在996引擎中显示物品框的极品属性,主要使用 `GUIFunction:GetExAttList()` 和 `GUIFunction:GetAttDataShow()` 这两个核心函数来处理。
**1. 获取极品属性数据列表**
首先,你需要从物品数据中提取出极品属性值。通常,物品的极品信息存储在 `itemData.Values` 表中,其中 `Id < 20` 的属性被视为极品属性。
```lua
-- 假设 itemData 是你的物品数据表
local jipinValues = {}
if itemData.Values and next(itemData.Values) ~= nil then
for _, v in pairs(itemData.Values) do
if v.Id < 20 then
table.insert(jipinValues, v)
end
end
end
```
**2. 转换为前端可用的属性表**
使用 `GUIFunction:GetExAttList()` 将上一步收集的 `jipinValues` 转换为标准的属性表。
```lua
local exAtt = GUIFunction:GetExAttList(jipinValues)
```
**3. 获取用于显示的文本**
使用 `GUIFunction:GetAttDataShow()` 将属性表转换为可以直接显示的文本格式。`true` 参数通常表示需要高亮或特殊显示。
```lua
local exAttShow = GUIFunction:GetAttDataShow(exAtt, true, true)
```
转换后,`exAttShow` 是一个以属性ID为键,包含 `name`(属性名)和 `value`(属性值)的表格,你可以遍历它来创建UI文本。
**4. 完整示例:在自定义物品框中显示**
以下是一个在自定义UI中创建文本显示极品属性的简化示例:
```lua
-- 1. 创建父窗口(物品框背景)
local parentWin = GUI:Win_Create("ItemBox_Win", 100, 100, 300, 400, false, false, true, false, false, false, 1)
-- 2. 假设这是你的物品数据处理函数
local function ShowItemExAttr(itemData)
-- 提取极品属性
local jipinValues = {}
if itemData.Values then
for _, v in pairs(itemData.Values) do
if v.Id < 20 then
table.insert(jipinValues, v)
end
end
end
-- 转换并获取显示文本
local exAtt = GUIFunction:GetExAttList(jipinValues)
local exAttShow = GUIFunction:GetAttDataShow(exAtt, true, true)
-- 3. 创建UI文本显示
local startY = 50
for attrId, attrInfo in pairs(exAttShow) do
local attrText = attrInfo.name .. attrInfo.value
local textWidget = GUI:Text_Create(parentWin, "Text_Attr_" .. attrId, 20, startY, 16, "#00ff00", attrText)
startY = startY + 25 -- 每行间隔
end
end
-- 调用示例
local myItemData = {
Values = {
{Id = 1, Value = 5}, -- 攻击
{Id = 3, Value = 10}, -- 防御
{Id = 25, Value = 2} -- 元素属性(非极品)
}
}
ShowItemExAttr(myItemData)
```
**核心要点总结:**
* **数据分离**:先通过判断 `Id < 20` 从 `Values` 中过滤出极品属性。
* **格式转换**:必须使用 `GUIFunction:GetExAttList()` 进行数据转换,才能被后续的显示函数识别。
* **文本渲染**:使用 `GUIFunction:GetAttDataShow()` 获得可直接显示的文本内容,然后通过 `GUI:Text_Create` 创建文本控件。
* **合并显示**:如果你需要将极品属性和基础属性一起显示,可以使用 `GUIFunction:CombineAttList()` 函数将它们合并到一个列表中,再统一处理显示。
按照这个流程,你就可以在任意自定义的物品框或提示框内正确渲染出物品的极品属性了。
← 返回问答库