欢迎来到淼淼之森的博客小站。  交流请加我微信好友: studyjava。  也欢迎关注同名公众号:Java学习之道

Unity开发bug记录100例子(第3例)——倒计时初始值默认显示不正确

  |   0 评论   |   0 浏览

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 协议

本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。若本站转载文章遗漏了原文链接,请及时告知,我们将做删除处理!文章观点不代表本网站立场,如需处理请联系首页客服。
• 网站转载须在文章起始位置标注作者及原文连接,否则保留追究法律责任的权利。
• 公众号转载请联系网站首页的微信号申请白名单!

个人微信公众号 ↓↓↓                 

微信搜一搜爱上游戏开发