Rank = {}
Rank._rankType = 1 -- 排行榜类型页签
Rank._showDataType = 1 -- 排行榜展示数据类型 (人物1-4 英雄6-9 总 战 法 道)
Rank._showLevel = false
Rank._path = "res/private/rank_ui/rank_ui_win32/"
function Rank.main(type)
local parent = GUI:Attach_Parent()
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-04-09 12:46:57 |
👁️ 阅读: 0
在您提供的代码中,接受后端传来的DATA数据主要是通过两个Lua事件回调函数:
1. **排行榜分类数据刷新** (`LUA_EVENT_RANK_DATA_UPDATE`)
- 事件注册在 `Rank.main` 函数中:
```lua
SL:RegisterLUAEvent(LUA_EVENT_RANK_DATA_UPDATE, "Rank", Rank.UpdateRankLayer)
```
- 当后端发送排行榜数据更新时,会触发 `Rank.UpdateRankLayer` 函数,其参数 `dataType` 就是后端传来的数据类型。
2. **玩家个人数据刷新** (`LUA_EVENT_RANK_PLAYER_UPDATE`)
- 同样在 `Rank.main` 中注册:
```lua
SL:RegisterLUAEvent(LUA_EVENT_RANK_PLAYER_UPDATE, "Rank", Rank.UpdateChooseModel)
```
- 当后端发送指定玩家的详细信息(如装备、外观数据)时,会触发 `Rank.UpdateChooseModel` 函数,其参数 `data` 就是后端传来的玩家数据。
**数据获取的核心流程:**
1. 前端通过 `SL:RequestRankData(Rank._showDataType)` 主动请求排行榜列表数据。
2. 后端响应后,会触发 `LUA_EVENT_RANK_DATA_UPDATE` 事件,并将数据类型 `dataType` 传给 `Rank.UpdateRankLayer`。
3. 在 `Rank.UpdateRankLayer` 中,通过 `SL:GetMetaValue("RANK_DATA_BY_TYPE", Rank._showDataType)` 获取到具体的排行榜列表数据。
4. 当玩家点击排行榜中的某一项时,通过 `SL:RequestPlayerRankData(data.UserID, Rank._selectType)` 请求该玩家的详细数据。
5. 后端响应后,触发 `LUA_EVENT_RANK_PLAYER_UPDATE` 事件,并将玩家详细数据 `data` 传给 `Rank.UpdateChooseModel`,最终用于更新右侧的角色模型。
所以,**DATA数据** 是通过引擎的事件回调机制,作为参数传递给注册好的处理函数(`UpdateRankLayer` 和 `UpdateChooseModel`)的。
← 返回问答库