Unity开发bug记录100例子(第3例)——倒计时初始值默认显示不正确
bug描述
今天做倒计时的时候,发现了一个bug,偶尔倒计时一开始显示的59:59。最开始以为是倒计时计时钱前没有将Text重置,后面发现重置了也会出现这个问题。
bug查找
打断点,打log,一直找不到问题所在。突然眼前灵光一闪,难道是计算出来的数值有问题?
代码如下,欢迎各位品尝
--时间戳转换为 00:00:00 格式
local function FormatTime(second)
local min = math.floor(second % 3600 / 60)
local sec = second % 60
return string.format("%02d:%02d", min, sec)
end
local funciton CountDown(second)
ui.tm = base:findtext("Text")
local now = os.time()
local startTm = XX;
local matchTimer = now - startTm--获取相隔时间戳
ui.cor2 = coroutine.start(function()
while (true) do
ui.tm.text = FormatTime(matchTimer)
coroutine.wait(1)
matchTimer = matchTimer + 1
end
end)
end
bug分析
果然,真的是数值的问题,发现倒计时时间戳计算结果是-1,经过格式化转换,就变成了59:59。当传进去的参参数是-1时,FormatTime返回的值就是 59:59
bug解决
控制间隔值不低于1,即可避免问题发生,使用math.max控制,如下:
matchTimer = math.max(now - startTm,0)
标题:Unity开发bug记录100例子(第3例)——倒计时初始值默认显示不正确
作者:shirlnGame
地址:https://www.mmzsblog.cn/articles/2022/07/11/1657504812543.html
如未加特殊说明,文章均为原创,转载必须注明出处。均采用CC BY-SA 4.0 协议!
本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。若本站转载文章遗漏了原文链接,请及时告知,我们将做删除处理!文章观点不代表本网站立场,如需处理请联系首页客服。• 网站转载须在文章起始位置标注作者及原文连接,否则保留追究法律责任的权利。
• 公众号转载请联系网站首页的微信号申请白名单!