[Unity]Lua本地时间、倒计时和正计时。

惯例,直接上代码:

Lua 复制代码
--正计时开始时的时间戳
self.begin_time = os.time()
--倒计时时长,01:30:00
self.countdown_time = 5400
--是否开始计时
self.is_update_local_time = true

--Unity Update
function time_transition:update_local_timer()
    if not self.is_update_local_time then 
        return
    end
    self.begin_time = self.begin_time + 1
    --正计时
    local positive_time = self.begin_time
    if positive_time > self.countdown_time then
        self.is_update_local_time = false
        self.text_positive_time.text = "01:30:00"
    else
        local positive_time_table = {}
        if positive_time < 60 then
            positive_time_table.hour = 0
            positive_time_table.minute = 0
            positive_time_table.second = positive_time
        elseif positive_time > 60 and positive_time < 3600 then
            positive_time_table.hour = 0
            positive_time_table.minute = math.modf(positive_time / 60)
            positive_time_table.second = positive_time - positive_time_table.minute * 60
        else
            positive_time_table.hour = math.modf(positive_time / 3600)
            positive_time_table.minute = math.modf((positive_time - positive_time_table.hour * 3600) / 60)
            positive_time_table.second = positive_time - positive_time_table.minute * 60 - positive_time_table.hour * 3600
        end
        self.text_positive_time.text = self:local_time_format(positive_time_table)
    end
    --倒计时
    local countdown_time = self.countdown_time - positive_time
    local countdown_time_table = {}
    if countdown_time > 3600 then
        countdown_time_table.hour = math.modf(countdown_time / 3600)
        countdown_time_table.minute = math.modf((countdown_time - countdown_time_table.hour * 3600) / 60)
        countdown_time_table.second = countdown_time - countdown_time_table.minute * 60 - countdown_time_table.hour * 3600
    elseif countdown_time > 60 and countdown_time < 3600 then
        countdown_time_table.hour = 0
        countdown_time_table.minute = math.modf(countdown_time / 60)
        countdown_time_table.second = countdown_time - countdown_time_table.minute * 60
    else
        countdown_time_table.hour = 0
        countdown_time_table.minute = 0
        countdown_time_table.second = countdown_time
    end
    if countdown_time > 0 then
        self.text_countdown_time.text = self:local_time_format(countdown_time_table)
    else
        self.text_countdown_time.text = "00:00:00"
    end
end

--格式化时间:00:00:00
function time_transition:local_time_format(time_table)
	local str_time = ""
	if time_table.hour then
		if time_table.hour >= 0 and time_table.hour < 10 then
			str_time = string.format("0%d" ,time_table.hour)
		else
			str_time = string.format("%d" ,time_table.hour)
		end
	end
	if time_table.minute then
		if time_table.minute >= 0 and time_table.minute < 10 then
			str_time = string.format("%s:0%d" ,str_time ,time_table.minute)
		else
			str_time = string.format("%s:%d" ,str_time ,time_table.minute)
		end
	end
	if time_table.second then
		if time_table.second >= 0 and time_table.second < 10 then
			str_time = string.format("%s:0%d" ,str_time ,time_table.second)
		else
			str_time = string.format("%s:%d" ,str_time ,time_table.second)
		end
	end
	return str_time
end
相关推荐
Thomas_YXQ2 小时前
Unity3D 动态骨骼性能优化详解
开发语言·网络·游戏·unity·性能优化·unity3d
Yungoal5 小时前
Unity入门1
unity·游戏引擎
杀死一只知更鸟debug18 小时前
Unity自学之旅04
unity
k56946216619 小时前
失业ing
unity·游戏引擎
天堂的恶魔94619 小时前
软件测试 —— Postman(全局变量和环境变量,请求前置脚本,关联)
测试工具·lua·postman
橘子遇见BUG21 小时前
Unity Shader学习日记 part5 CG基础
学习·unity·游戏引擎·图形渲染
来恩10032 天前
Unity 学习之旅:从新手到高手的进阶之路
学习·unity·游戏引擎
创世界---2 天前
unity插件Excel转换Proto插件-ExcelToProtobufferTool
unity·excel·exceltoproto·protobuffer
向宇it3 天前
【从零开始入门unity游戏开发之——C#篇46】C#补充知识点——命名参数和可选参数
开发语言·unity·c#·编辑器·游戏引擎
快乐觉主吖3 天前
使用Newtonsoft.Json插件,打包至Windows平台显示不支持
unity·json