SL:print("打开天命界面")
local function destinyHandler(i)
-- 这里的buttonIndex就是传递过来的i值
SL:print("点击了按钮:", i)
-- 其他处理逻辑...
end
for i = 1, 13 do
local btn = GUI:getChildByName(PlayerEquip._ui.destiny_list, "btn_"..i)
GUI:addOnClic
根据浮生梦老师前端课程内容,`SL:Require`函数在调用时会执行目标文件,但不会自动调用其中的函数。你需要确保`destiny.lua`文件中的函数被正确调用。
修改你的代码,在`destiny.lua`文件中添加一个入口函数,并在`SL:Require`调用后执行它:
```lua
-- destiny.lua文件
local function destinyHandler(i)
SL:print("点击了按钮:", i)
-- 其他处理逻辑...
end
-- 添加一个入口函数
function OnDestinyButtonClick(buttonIndex)
destinyHandler(buttonIndex)
end
```
然后在主文件中这样调用:
```lua
SL:print("打开天命界面")
for i = 1, 13 do
local btn = GUI:getChildByName(PlayerEquip._ui.destiny_list, "btn_"..i)
GUI:addOnClickEvent(btn, function()
-- 先加载文件
SL:Require("qianduan/button/destiny.lua", true)
-- 然后调用目标文件中的函数
OnDestinyButtonClick(i)
end)
end
```
或者,如果你希望直接在`SL:Require`中传递参数并执行,可以这样设计`destiny.lua`:
```lua
-- destiny.lua文件
function OnRequire(buttonIndex)
SL:print("点击了按钮:", buttonIndex)
-- 其他处理逻辑...
end
```
然后在主文件中:
```lua
for i = 1, 13 do
local btn = GUI:getChildByName(PlayerEquip._ui.destiny_list, "btn_"..i)
GUI:addOnClickEvent(btn, function()
-- 加载文件并立即执行函数
SL:Require("qianduan/button/destiny.lua", true, i)
end)
end
```
这样就能正确传递按钮索引参数并执行相应的逻辑了。注意:`SL:Require`的第三个参数会传递给目标文件,但目标文件需要有相应的接收机制。