GUI:CheckBox_addOnEvent(check_Box, function()
local isSelected = GUI:CheckBox_isSelected(check_Box)
SL:print(isSelected)
-- 根据这个状态来执行后续逻辑
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-05-07 00:57:52 |
👁️ 阅读: 19
你的代码中有一个变量作用域问题。在`else`分支里,你尝试访问`checkBox_state`变量,但这个变量是在`if`分支中定义的局部变量,在`else`分支中不可用。
问题出现在这里:
```lua
SL:print("复选框装填 "..checkBox_state) -- 这里checkBox_state是nil
```
修改后的代码:
```lua
GUI:CheckBox_addOnEvent(check_Box, function()
local isSelected = GUI:CheckBox_isSelected(check_Box)
SL:print(isSelected)
local checkBox_state = 0 -- 先定义默认值
if isSelected then
checkBox_state = 1
npc.selectedItems[n] = {
mainTitle = mainTitle,
subName = subName,
equipName = n,
checkBox_state = checkBox_state
}
SL:print("==================================")
SL:print("主分类:"..mainTitle)
SL:print("二级分类:"..subName)
SL:print("装备名:"..n)
SL:print("选中状态:"..tostring(isSelected))
SL:print("复选框状态 "..checkBox_state)
SL:print("==================================")
SL:dump(npc.selectedItems[n])
local checkBoxJson = SL:JsonEncode(npc.selectedItems[n], true)
SL:SendLuaNetMsg(2021, 21, 0, 0, checkBoxJson)
else
checkBox_state = 0
npc.selectedItems[n] = {
mainTitle = mainTitle,
subName = subName,
equipName = n,
checkBox_state = checkBox_state
}
SL:print("==================================")
SL:print("主分类:"..mainTitle)
SL:print("二级分类:"..subName)
SL:print("装备名:"..n)
SL:print("选中状态:"..tostring(isSelected))
SL:print("复选框状态 "..checkBox_state) -- 现在可以正常访问了
SL:print("==================================")
local checkBoxJson = SL:JsonEncode(npc.selectedItems[n], true)
SL:SendLuaNetMsg(2021, 21, 0, 0, checkBoxJson)
end
end)
```
主要修改:
1. 在`if`之前先定义`checkBox_state`变量
2. 统一使用这个变量来设置状态值
3. 确保`else`分支也能正确访问这个变量
这样修改后,`checkBox_state`就不会是`nil`了,传递给后端的JSON数据也会包含正确的状态值。
← 返回问答库