local attr_images = {
[2] = ui.cur_attr_2,
[3] = ui.cur_attr_3,
[4] = ui.cur_attr_4,
[5] = ui.cur_attr_5,
[6] = ui.cur_attr_6,
[7] = ui.cur_attr_7,
[8] = ui.cur_attr_8,
[9] = ui.cur_attr_9,
}
-- 第一步:全部隐藏
for i = 2, 9
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-04-18 13:34:48 |
👁️ 阅读: 4
这段代码的思路是正确的,但有个小问题需要调整。在第二步中,`string.find(T13, pattern)` 的匹配方式可能不够精确。比如,当 `i=2` 时,`pattern` 是 `"2"`,如果 `T13` 的值是 `"12"`,那么 `string.find("12", "2")` 也会返回 `true`,这会导致 `i=2` 的节点被错误地显示出来。
建议使用更精确的查找方式,例如将 `T13` 按特定分隔符(如逗号)拆分成一个表,然后判断数字是否存在于这个表中。以下是优化后的代码:
```lua
local attr_images = {
[2] = ui.cur_attr_2,
[3] = ui.cur_attr_3,
[4] = ui.cur_attr_4,
[5] = ui.cur_attr_5,
[6] = ui.cur_attr_6,
[7] = ui.cur_attr_7,
[8] = ui.cur_attr_8,
[9] = ui.cur_attr_9,
}
-- 第一步:全部隐藏
for i = 2, 9 do
local node = attr_images[i]
if GUI:Win_IsNotNull(node) then
GUI:setVisible(node, false)
end
end
-- 第二步:如果 T13 存在,解析并显示对应的节点
if T13 and type(T13) == "string" then
-- 假设 T13 是以逗号分隔的字符串,例如 "2,5,8"
local t = {}
for num in string.gmatch(T13, "%d+") do
t[tonumber(num)] = true
end
for i = 2, 9 do
if t[i] then
local node = attr_images[i]
if GUI:Win_IsNotNull(node) then
GUI:setVisible(node, true)
end
end
end
end
```
**主要改进:**
1. 增加了对 `T13` 存在性和类型的判断。
2. 使用 `string.gmatch` 和 `%d+` 模式来提取 `T13` 中的所有数字,并存入一个表 `t` 中,以 `数字=true` 的形式存储。
3. 在第二步循环中,通过 `t[i]` 直接判断数字 `i` 是否存在于 `T13` 中,避免了模糊匹配的问题。
这样修改后,只有当 `T13` 中明确包含数字 `2` 时,`i=2` 的节点才会被显示,不会因为 `"12"` 而误判。记得根据你实际项目中 `T13` 的格式(比如是不是用逗号分隔)来调整分隔符。
← 返回问答库