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()
if not parent t
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-05-12 13:23:31 |
👁️ 阅读: 8
根据你提供的代码,问题出现在`Rank.CreateListCell`函数中处理`showLvStr`(即`data.Value`)的逻辑部分。
当前代码对`showLvStr`(`data.Value`)的字符串长度进行了判断:
```lua
if string.len(showLvStr) == 4 then
local firstPart = string.sub(showLvStr, 1, 2)
local secondPart = string.sub(showLvStr, 3, 4)
showLvStr = string.format("%s转%s级", firstPart, secondPart)
elseif string.len(showLvStr) == 3 then
local firstPart = string.sub(showLvStr, 1, 1)
local secondPart = string.sub(showLvStr, 2, 3)
showLvStr = string.format("%s转%s级", firstPart, secondPart)
elseif string.len(showLvStr) == 2 then
showLvStr = showLvStr.."级"
end
```
**问题分析:**
1. 当你是"10转50级"时,服务器返回的`data.Value`可能是"1050"(4位字符串)
2. 代码按4位处理:前2位"10"作为转生,后2位"50"作为等级
3. 但实际显示时,代码又拼接了`Rank.CheckLvDesc()`返回的描述
**显示逻辑:**
```lua
GUI:Text_setString(ui.Text_3, showLvStr and (showLvStr..Rank.CheckLvDesc()) or "")
```
所以最终显示为"10转50级"加上排行榜类型描述。
**如果你看到显示的是"50级"而不是"10转50级",可能的原因是:**
1. `data.Value`不是"1050"格式
2. 字符串长度判断有问题
3. `Rank._showLevel`为false时,显示的是公会名而不是等级
**建议调试:**
在`Rank.CreateListCell`函数中添加调试打印:
```lua
SL:Print("原始data.Value:", data.Value)
SL:Print("字符串长度:", string.len(showLvStr))
SL:Print("处理后的showLvStr:", showLvStr)
```
这样可以确认服务器返回的数据格式是否正确。
← 返回问答库