根据浮生梦老师前端课程内容,要让`selectEscortCart`一直显示,需要确保在界面打开时正确设置其可见性。你的代码中已经处理了选择镖车的逻辑,但需要确保初始状态正确显示。
主要问题是在`openWin`函数中,当`selectEscortCart`已经存在时,你设置了它的可见性,但可能没有正确获取到对应的UI控件。
修改后的`openWin`函数:
```lua
function npc:openWin(p3)
local width, height = SL:GetMetaValue("SCREEN_WIDTH"), SL:GetMetaValue("SCREEN_HEIGHT")
local win_bc = GUI:Win_Create("win_bc", 0, 0, width, height)
local mobile, pc = SL:GetMetaValue("PLATFORM_MOBILE"), SL:GetMetaValue("PLATFORM_WINDOWS")
if pc then
local win_bc_1 = GUI:Node_Create(win_bc,"Win_item_k_1", width/2,height/2)
GUI:LoadExport(win_bc_1, "playernpc/escortGoods")
end
if mobile then
local win_bc_1 = GUI:Node_Create(win_bc,"Win_item_k_1", width/2,(height/2 + 20))
GUI:LoadExport(win_bc_1, "playernpc/escortGoods")
end
npc.ui = GUI:ui_delegate(win_bc)
GUI:addOnClickEvent(npc.ui.esc, function()
GUI:Win_Close(win_bc)
end)
SL:print(p3)
GUI:Text_setString(npc.ui.cost_test, tostring(p3))
-- 确保selectEscortCart始终显示
if not selectEscortCart then
selectEscortCart = npc.ui.ImageEscortCart_1
end
-- 设置所有镖车初始状态
for i = 1, 5 do -- 假设有5个镖车选项
local cartName = "ImageEscortCart_" .. i
if npc.ui[cartName] then
if cartName == "ImageEscortCart_1" then
GUI:setVisible(npc.ui[cartName], true)
else
GUI:setVisible(npc.ui[cartName], false)
end
end
end
-- 刷新镖车
GUI:addOnClickEvent(npc.ui.btn_refresh, function()
SL:SendLuaNetMsg(2031, 31, 1, 0, "龙门镖局")
end)
-- 确认镖车
GUI:addOnClickEvent(npc.ui.btn_sure, function()
SL:SendLuaNetMsg(2031, 31, 2, 0, "龙门镖局")
end)
end
```
同时,在`refreshwin`函数中确保正确更新显示状态:
```lua
function npc:refreshwin(p2, p3)
local moneyText = tostring(p3)
GUI:Text_setString(npc.ui.cost_test, moneyText)
-- 隐藏之前选择的镖车
if selectEscortCart then
GUI:setVisible(selectEscortCart, false)
end
-- 显示新选择的镖车
local cartName = "ImageEscortCart_" .. tostring(p2)
if npc.ui[cartName] then
selectEscortCart = npc.ui[cartName]
GUI:setVisible(selectEscortCart, true)
end
end
```
这样修改后,`selectEscortCart`会始终显示当前选择的镖车,并且在刷新时正确切换显示状态。