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:33:06 |
👁️ 阅读: 0
根据你的代码,我看到排行榜显示的是 `data.Value` 这个字段。你想在转生等级后面加上“转”和普通等级“级”。
在你的 `Rank.CreateListCell` 函数中,找到处理 `showLvStr` 的部分。目前 `showLvStr` 直接使用了 `data.Value`。你需要对这个字符串进行格式化。
假设服务端传来的 `data.Value` 就是转生等级(例如“5”表示5转),并且你还需要获取玩家的普通等级。但根据浮生梦老师前端课程内容,排行榜数据里可能没有直接提供普通等级。不过,我们可以从 `data` 中寻找其他字段,或者通过 `SL:GetMetaValue` 获取当前玩家的等级来模拟,但这对于其他玩家可能不准确。
一个更常见的做法是:服务端在发送排行榜数据时,已经将转生和等级合并成一个字段,或者分开发送。我们需要检查 `data` 中是否有其他可用字段,比如 `data.Level`(普通等级)和 `data.ReLevel`(转生等级)。
根据常见的配置,修改 `Rank.CreateListCell` 函数中设置 `showLvStr` 的部分:
```lua
function Rank.CreateListCell(parent, data)
GUI:LoadExport(parent, "rank/rank_cell_win32")
local cell = GUI:getChildByName(parent, "Panel_cells")
local ui = GUI:ui_delegate(cell)
local rank = tonumber(data.rank) or 1
if rank > 0 and rank <= 3 then
GUI:setVisible(ui.Text_rank, false)
GUI:setVisible(ui.Image_rank, true)
GUI:Image_loadTexture(ui.Image_rank, Rank._path .. string.format("%s.png", 1900020024 + rank))
else
GUI:setVisible(ui.Text_rank, true)
GUI:setVisible(ui.Panel_ranks, false)
GUI:Text_setString(ui.Text_rank, rank == 0 and "未上榜" or rank)
end
-- 背景底图
GUI:setVisible(ui.Image_bg, rank % 2 == 1)
-- 修改开始:构建等级显示字符串
local showLvStr = ""
local reLevel = data.ReLevel or 0 -- 假设转生等级字段是 ReLevel
local level = data.Level or 1 -- 假设普通等级字段是 Level
if reLevel > 0 then
showLvStr = string.format("%d转", reLevel)
end
showLvStr = showLvStr .. string.format("%d级", level)
-- 修改结束
local guildText = ui.Text_3
if Rank._showLevel then
guildText = ui.Text_4
GUI:Text_setString(ui.Text_3, showLvStr and (showLvStr..Rank.CheckLvDesc()) or "")
end
GUI:Text_setString(guildText, data.GuildName)
GUI:Text_setString(ui.Text_1, data.Name)
local function panelCB()
Rank.ResetSelectItem(data)
end
GUI:addOnClickEvent(ui.Panel_touch, panelCB)
return cell
end
```
**注意:**
1. 上面的代码假设了数据字段 `ReLevel` 和 `Level`。你需要确认服务端下发的排行榜数据中是否确实包含这些字段。你可以通过 `SL:Print` 打印 `data` 表来查看所有可用字段。
2. 如果服务端下发的 `data.Value` 已经是一个组合字符串,你可能需要调整解析逻辑。
3. 如果服务端没有提供普通等级,你可能需要联系后端同学调整数据下发格式。
修改后,排行榜的等级显示就会变成类似“5转80级”的格式了。如果字段名不对,记得根据实际数据调整哦!
← 返回问答库