这段代码可以通过使用循环和数组来优化,减少重复代码。以下是优化后的版本:
```lua
-- 定义控件组
local wanchengGroup = {ui.wancheng, ui.wancheng_1, ui.wancheng_2, ui.wancheng_3, ui.wancheng_4}
local imageGroup = {ui.Image_4, ui.Image_5, ui.Image_6, ui.Image_7, ui.Image_8}
local effectGroup1 = {ui.Effect_1, ui.Effect_2, ui.Effect_3, ui.Effect_4, ui.Effect_5}
local effectGroup2 = {ui.Effect_6, ui.Effect_7, ui.Effect_8, ui.Effect_9, ui.Effect_10}
local function setAllVisible(group, visible)
for _, widget in ipairs(group) do
if widget then
GUI:setVisible(widget, visible)
end
end
end
local function setVisibleByIndex(group, index)
for i, widget in ipairs(group) do
if widget then
GUI:setVisible(widget, i <= index)
end
end
end
-- 处理不同var值的情况
if var <= 0 then
setAllVisible(wanchengGroup, false)
setAllVisible(imageGroup, false)
setAllVisible(effectGroup2, false)
setAllVisible(effectGroup1, true)
elseif var >= 1 and var < 2 then
setVisibleByIndex(wanchengGroup, 1)
setAllVisible(imageGroup, false)
setVisibleByIndex(effectGroup2, 1)
setVisibleByIndex(effectGroup1, 5) -- 显示后4个
elseif var >= 2 and var < 3 then
setVisibleByIndex(wanchengGroup, 2)
GUI:setVisible(ui.Image_5, true)
setVisibleByIndex(effectGroup2, 2)
setVisibleByIndex(effectGroup1, 5) -- 显示后3个
elseif var >= 3 and var < 4 then
setVisibleByIndex(wanchengGroup, 3)
GUI:setVisible(ui.Image_6, true)
setVisibleByIndex(effectGroup2, 3)
setVisibleByIndex(effectGroup1, 5) -- 显示后2个
elseif var >= 4 and var < 5 then
setVisibleByIndex(wanchengGroup, 4)
GUI:setVisible(ui.Image_7, true)
setVisibleByIndex(effectGroup2, 4)
setVisibleByIndex(effectGroup1, 5) -- 显示最后1个
elseif var >= 5 then
setVisibleByIndex(wanchengGroup, 5)
GUI:setVisible(ui.Image_8, true)
setVisibleByIndex(effectGroup2, 5)
setAllVisible(effectGroup1, false)
end
```
**优化说明:**
1. **使用数组分组**:将相似的控件分组,便于批量操作
2. **封装函数**:创建了`setAllVisible`和`setVisibleByIndex`两个辅助函数
3. **减少重复代码**:原来需要大量重复的`GUI:setVisible`调用,现在通过循环处理
4. **使用elseif**:更清晰的条件判断结构
5. **添加nil检查**:在函数中检查控件是否存在,避免空指针错误
**注意:**
- `imageGroup`中的控件显示逻辑有些特殊(每次只显示一个),所以单独处理
- `effectGroup1`的显示逻辑是递减的,所以使用`setVisibleByIndex`函数
- 代码更简洁,易于维护和修改
这样优化后,如果以后需要添加更多控件或调整显示逻辑,只需要修改数组定义即可,不需要修改大量重复代码。