SL:print("打开图鉴界面")
local npc = {}
npc.config = {
-- 套装1:烈焰战神
[1] = {
name = "烈焰战神",
items = {50037, 50038, 50039, 50040, 50041},
attrs = {
{id = 3, value = 50},
{id = 4, value = 50},
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-03-10 12:55:54 |
👁️ 阅读: 7
要让进入界面后默认显示第一个按钮的内容,并且第一个按钮为绿色,你需要在创建完所有按钮后,手动触发第一个按钮的点击事件并设置其初始状态。
以下是修改后的代码:
```lua
SL:print("打开图鉴界面")
local npc = {}
npc.config = {
-- 套装1:烈焰战神
[1] = {
name = "烈焰战神",
items = {50037, 50038, 50039, 50040, 50041},
attrs = {
{id = 3, value = 50},
{id = 4, value = 50},
{id = 21, value = 15},
{id = 25, value = 20}
}
},
-- ... (其他套装配置保持不变)
-- 套装25:暗月法师
[25] = {
name = "暗月法师",
items = {50157, 50158, 50159, 50160, 50161},
attrs = {
{id = 5, value = 65},
{id = 6, value = 65},
{id = 15, value = 28},
{id = 27, value = 28}
}
}
}
local function networkCB(msgID, p1 ,p2 ,p3 ,msgData)
SL:print("===== 收到后端消息 =====")
SL:print("消息ID: " .. tostring(msgID))
SL:print("参数1: " .. tostring(p1))
SL:print("参数2: " .. tostring(p2))
SL:print("参数3: " .. tostring(p3))
SL:print("字符串: " .. tostring(msgData))
SL:print("=======================")
if msgID == 1014 and msgData == "装备图鉴" then
if p1 == 14 and p2 == 0 then
npc:openWin()
end
end
end
function npc:openWin()
-- 创造外部界面
local win_illustratedGuide = GUI:Win_Create("win_illustratedGuide", 0, 0, 0, 0)
GUI:LoadExport(win_illustratedGuide, "illustratedGuide")
npc.ui = GUI:ui_delegate(win_illustratedGuide)
GUI:addOnClickEvent(npc.ui.esc, function()
GUI:Win_Close(win_illustratedGuide)
end)
-- 创建图鉴按钮
local page = math.ceil(25/18)
local start_x = 0
local start_y = 363
local spacing_x = 116
local spacing_y = 45
local selectBtn = nil
for k, v in ipairs(npc.config) do
local nowPage = math.floor((k-1) / 18) -- 当前页数
local pos = (k-1) % 18 -- 按钮位置
local col = pos % 2 -- 行位置
local row = math.floor(pos/2) -- 列位置
local ly_x = col * spacing_x + start_x -- 按钮x坐标
local ly_y = start_y - (row * spacing_y) -- 按钮y坐标
local btnName = "btn" .. k
local btn_Item = GUI:Button_Create(npc.ui.btn_Layout, btnName, ly_x, ly_y, "res/01/010006.png") -- 设置套装按钮
GUI:Button_loadTextureDisabled(btn_Item, "res/01/010005.png")
GUI:Button_setTitleText(btn_Item, v.name) -- 设置套装对应名
GUI:Button_setTitleFontSize(btn_Item, 16)
-- 存储按钮引用,方便后面使用
npc.ui["btn" .. k] = btn_Item
GUI:addOnClickEvent(btn_Item, function()
if selectBtn ~= nil then
GUI:Button_setTitleColor(selectBtn, "#ffffff")
end
GUI:Button_setTitleColor(btn_Item, "#00ff00")
selectBtn = btn_Item
-- 这里可以添加显示套装内容的逻辑
-- 例如:npc:showSuitInfo(k)
end)
end
GUI:Text_setString(npc.ui.pageTotalNumber, "/ "..page)
-- 设置第一个按钮为绿色并显示其内容
if npc.ui.btn1 ~= nil then
GUI:Button_setTitleColor(npc.ui.btn1, "#00ff00")
selectBtn = npc.ui.btn1
-- 这里可以添加显示第一个套装内容的逻辑
-- 例如:npc:showSuitInfo(1)
end
end
SL:RegisterLuaNetMsg(1014, networkCB)
```
主要修改:
1. **存储按钮引用**:在循环中把每个创建的按钮都存储到 `npc.ui` 表中,这样后面可以通过 `npc.ui.btn1` 访问第一个按钮。
2. **初始化第一个按钮**:在所有按钮创建完成后,通过 `if npc.ui.btn1 ~= nil then` 判断第一个按钮是否存在,然后设置其颜色为绿色。
3. **更新选择逻辑**:修改了点击事件的逻辑,先清除之前选择的按钮颜色,再设置当前按钮颜色。
4. **注释了显示内容的位置**:我添加了注释,告诉你可以在哪里添加显示套装内容的逻辑,你可以根据实际需求实现 `npc:showSuitInfo(k)` 函数。
这样修改后,进入界面时第一个按钮就会显示为绿色,并且你可以在相应的位置添加显示第一个套装详细信息的逻辑。
← 返回问答库