-- 检查Effect_17到Effect_21是否全部显示
local allEffectsVisible = true
for i = 17, 21 do
local effectName = "Effect_" .. i
if GUI:Win_IsNotNull(ui[effectName]) then
if not GUI:isVisible(ui[effectName]) then
根据你提供的代码,我发现了几个问题需要修正:
1. **函数名错误**:检查可见性应该使用 `GUI:isVisible()` 函数
2. **变量名不一致**:你使用的是 `ui[effectName]`,但前面的代码使用的是 `self.ui[effectName]`
3. **缺少空值判断**:在检查可见性之前应该先确保控件存在
修正后的代码:
```lua
-- 检查Effect_17到Effect_21是否全部显示
local allEffectsVisible = true
for i = 17, 21 do
local effectName = "Effect_" .. i
local effectWidget = self.ui[effectName]
-- 先检查控件是否存在
if GUI:Win_IsNull(effectWidget) then
allEffectsVisible = false
break
end
-- 再检查是否可见
if not GUI:isVisible(effectWidget) then
allEffectsVisible = false
break
end
end
-- 使用结果
if allEffectsVisible then
SL:print("所有特效都显示!")
else
SL:print("有特效未显示!")
end
```
**主要修改点:**
1. 将 `GUI:Win_IsNotNull()` 改为 `GUI:Win_IsNull()` 进行空值判断
2. 使用 `GUI:isVisible()` 检查可见性
3. 统一使用 `self.ui` 作为UI控件的容器
4. 增加了更清晰的逻辑判断顺序
下次写代码时要注意函数名的正确性,如果对函数用法不确定,可以随时问我!