一个界面 上面有个按钮 第一次进来显示文字为 未点击 点击后显示 已点击 关闭界面后点开 还是显示已点击
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-03-21 18:31:38 |
👁️ 阅读: 12
要实现这个功能,你需要保存按钮的点击状态,并在界面重新打开时恢复这个状态。可以使用 `SL:GetMetaValue` 来获取和保存服务端的变量。
```lua
-- 创建界面
local parent = GUI:Win_Create("GMMain", 0, 0, 0, 0, false, false, true, false, false, false, 1)
-- 创建按钮
local button = GUI:Button_Create(parent, "btn_test", 100, 100, "res/public/1900000612.png")
GUI:Button_setTitleText(button, "未点击")
-- 从服务端获取点击状态
local isClicked = SL:GetMetaValue("BUTTON_CLICKED", "btn_test") or 0
-- 根据状态设置按钮文字
if isClicked == 1 then
GUI:Button_setTitleText(button, "已点击")
else
GUI:Button_setTitleText(button, "未点击")
end
-- 按钮点击事件
GUI:addOnClickEvent(button, function()
-- 设置点击状态为1(已点击)
SL:SetMetaValue("BUTTON_CLICKED", "btn_test", 1)
-- 更新按钮文字
GUI:Button_setTitleText(button, "已点击")
SL:print("按钮状态已保存为:已点击")
end)
-- 界面关闭时不需要做什么,状态已经保存在服务端
```
**实现原理:**
1. **状态存储**:使用 `SL:GetMetaValue` 从服务端获取按钮的点击状态
2. **状态恢复**:界面打开时根据存储的状态设置按钮文字
3. **状态更新**:按钮点击后通过 `SL:SetMetaValue` 保存状态到服务端
4. **持久化**:服务端数据会一直保存,即使关闭界面再打开也能恢复状态
**注意事项:**
- `"btn_test"` 是按钮的唯一标识,确保不同按钮使用不同的标识
- 服务端变量会一直存在,直到你主动清除或服务器重启
- 如果需要重置状态,可以调用 `SL:SetMetaValue("BUTTON_CLICKED", "btn_test", 0)`
这样无论你关闭界面多少次,重新打开时按钮都会显示正确的状态!
← 返回问答库