if cur_cfg and next(cur_cfg) then
local idx = lib:getitemidx(cur_cfg.name)
local item_data = SL:GetMetaValue("ITEM_DATA", idx)
hualong.item_data = item_data
local effid = lib:get_bs_effect_id(item_data.sEffect)
你这个判断逻辑确实有问题,让我帮你分析一下:
```lua
-- 主要问题:
-- 1. 在if条件内创建Effect_hl,然后马上又判断var >=5并移除
-- 2. 在if条件结束后又重复创建了一次Effect_hl,但这次没有判断条件
if effid and effid >= 0 then
local x = next_cfg.effect_x
local y = next_cfg.effect_y
local Effect_hl = GUI:Effect_Create(ui["Layout_eff"], "Effect_hl", x, y, 3, effid, 0, 0, 0, 1)
GUI:setScale(Effect_hl, 1)
GUI:setTag(Effect_hl, -1)
-- 这里创建后立即判断var,如果var>=5就移除,等于白创建
if var >=5 then
GUI:removeChildByName(ui["Layout_eff"], "Effect_hl")
end
-- 这里又创建一次,但没有判断条件
local Effect_hl = GUI:Effect_Create(ui["Layout_eff"], "Effect_hl", x, y, 3, effid, 0, 0, 0, 1)
GUI:setScale(Effect_hl, 1)
GUI:setTag(Effect_hl, -1)
end
```
**建议修改:**
```lua
if effid and effid >= 0 then
local x = next_cfg.effect_x
local y = next_cfg.effect_y
-- 先判断var,只有var<5才创建特效
if var < 5 then
local Effect_hl = GUI:Effect_Create(ui["Layout_eff"], "Effect_hl", x, y, 3, effid, 0, 0, 0, 1)
GUI:setScale(Effect_hl, 1)
GUI:setTag(Effect_hl, -1)
end
end
```
**问题总结:**
1. 逻辑顺序错误:先创建后移除,效率低下
2. 重复创建:同一个Effect_hl创建了两次
3. 缺少括号:最后一行缺少闭合括号
**正确做法:**
- 先判断条件,再决定是否创建特效
- 避免重复创建相同的特效节点
- 确保代码结构清晰,括号匹配
下次写条件判断时,先理清逻辑顺序,不懂的可以问浮生梦尊师!