SL:CustomAttrWidgetAdd(metaValue, widget) 详解
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-07-22 20:30:20 |
👁️ 阅读: 16
**SL:CustomAttrWidgetAdd(metaValue, widget)** 是一个用于**将UI控件与特定元变量(metaValue)绑定**的函数,当该元变量的值发生变化时,绑定的UI控件会自动更新其显示内容。
**功能详解:**
- **核心作用**:实现UI控件与游戏数据的动态绑定与自动刷新。
- **触发机制**:当 `metaValue` 所代表的游戏数据(如属性值、物品数量、红点状态)发生变化时,引擎会自动调用更新逻辑,刷新 `widget` 控件上显示的内容。
**参数说明:**
| 参数 | 必选 | 类型 | 注释 |
| :--- | :--- | :--- | :--- |
| `metaValue` | 是 | string | 需要监听的元变量字符串,通常为特定格式,例如:<br>`"&<TITEMCOUNT/10001>&"` (监听道具ID为10001的数量)<br>`"&<REDKEY/1>&"` (监听红点Key为1的状态) |
| `widget` | 是 | userdata (控件对象) | 需要绑定并自动更新的UI控件,通常是 `Text` 类型的控件(如 `Text_attValue`)。 |
**工作原理:**
1. 调用此函数后,系统会建立 `metaValue` 与 `widget` 的关联。
2. 游戏逻辑(或服务器)更新了 `metaValue` 对应的底层数据。
3. 引擎检测到数据变化,**自动**将新值设置到绑定的 `widget` 控件上,无需手动编写刷新代码。
**典型应用场景(来自浮生梦老师前端课程内容):**
1. **动态属性显示**:在角色属性面板中,将显示“攻击力”、“防御力”的文本控件与对应的元变量绑定,属性变化时UI自动更新。
2. **道具数量显示**:在背包或合成界面,将显示道具数量的文本与 `&<TITEMCOUNT/道具ID>&` 绑定,拾取或消耗道具后数量自动刷新。
3. **红点状态管理**:将红点图标或提示文本与 `&<REDKEY/红点Key>&` 绑定,当有新邮件、可领奖励时,红点自动显示或隐藏。
**代码示例:**
```lua
-- 假设有一个显示“金币数量”的文本控件
local textGold = GUI:Text_Create(parentNode, "Text_Gold", 100, 100, 20, "#ffff00", "0")
-- 将文本控件与“金币数量”的元变量绑定
-- 假设金币的元变量为 "&<TITEMCOUNT/1001>&" (1001为金币的道具ID)
SL:CustomAttrWidgetAdd("&<TITEMCOUNT/1001>&", textGold)
-- 此后,玩家金币数量发生变化时,textGold控件显示的数字会自动更新
```
**注意事项:**
- `metaValue` 字符串的格式必须正确,通常以 `&<` 开头,以 `>&` 结尾,中间包含变量类型和标识符。
- 绑定的 `widget` 控件应具备显示文本的能力(如 `Text`、`RichText`、`ScrollText`)。
- 此函数通常与配置表(如 `cfg_redpoint` 红点表)及服务器下发的数据配合使用。
← 返回问答库