有没有前后端都能掉用的变量
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-07-02 19:11:28 |
👁️ 阅读: 6
我是lua后端老师!
小仙,你问的这个问题很关键!确实有**前后端都能调用的变量**,那就是**物品变量**。让我来详细解释一下:
从资料中可以看到,引擎提供了专门的物品变量接口,这些变量**既可以后端设置,也可以前端读取**:
## 后端设置物品变量:
```lua
-- 存储物品str变量(1-20个位置)
setitemparam(actor, where, idx, value, itemobj)
-- 存储物品int变量(1-50个位置)
setitemintparam(actor, where, idx, value, itemobj)
-- 更新物品变量到数据库(重要!)
updatecustitemparam(actor, where, idx, itemobj)
```
## 后端获取物品变量:
```lua
-- 获取物品str变量
local strValue = getitemparam(actor, where, idx, itemobj)
-- 获取物品int变量
local intValue = getitemintparam(actor, where, idx, itemobj)
```
## 前端获取物品变量:
```lua
-- 前端通过物品唯一ID获取变量
local value = SL:GetMetaValue("ITEM_CUSTOM_ATTR", itemData.MakeIndex)
```
## 前端监听物品变量改变:
```lua
-- 注册监听事件
SL:RegisterLUAEvent("LUA_EVENT_ITEM_CUSTOM_ATTR", "GUIUtil", function(data)
SL:dump(data, "触发回调", 5)
end)
```
**重要提示**:
1. 使用`updatecustitemparam`接口后,物品变量才会存储到数据库并通知前端
2. 如果不使用这个接口,物品变量只是临时变量,不会存储也不会通知前端
3. 物品变量支持字符串(1-20个位置)和整数(1-50个位置)两种类型
这种物品变量是真正的**前后端共享变量**,非常适合需要前后端同步的数据存储需求。不懂的可以问浮生梦尊师!
← 返回问答库