unity倒计时

using UnityEngine;
using System.Collections;
using System;

public delegate void DeleFun_Int(int t);
public class UNTimeScript : MonoBehaviour
{
	private DeleFun_Int m_Call;
	private int m_Time;
	private bool m_isUpPauseTime;

	bool isBegin = false;
	float buffer = 0f;
	int step = 1;

	long TickTime;
	bool isPause=false;
	bool isFocus=false; 
	void OnEnable()
	{ 
		isPause=false; 
		isFocus=false; 	
	} 
	void OnApplicationPause()
	{ 
		if(!isPause)
		{
			TickTime = Environment.TickCount;
		} 
		else 	
		{
			isFocus=true; 	
		} 
		isPause=true;
	} 
	void OnApplicationFocus()
	{
		//Debug.Log("OnApplicationFocus  " + isPause + "  " + isFocus); 
		if(isFocus)
		{ 
			// “启动”手机时,事件 
			isPause=false;
			isFocus=false;
			TickTime = Environment.TickCount - TickTime;
			if(isBegin && m_isUpPauseTime)
			{
				buffer += TickTime/1000f;
			}
		} 
		if(isPause) 	
		{
			isFocus=true;
		} 
	} 


	void Awake()
	{
		
	}
	void Update ()
	{
		if(isBegin)
		{
			buffer += Time.deltaTime;
			if(buffer >= step)
			{
				do
				{
					buffer -= step;
					m_Time -= step;
				}while(buffer >= step);
				if(m_Time <= 0)
				{
					m_Time = 0;
					isBegin = false;
				}
				TimeCall();
			}
		}
	}
	public void InitData(int t, DeleFun_Int call, bool isUpPauseTime)
	{
		m_Time = t;
		m_Call = call;
		m_isUpPauseTime = isUpPauseTime;
		buffer = 0f;
		isBegin = false;
		if(m_Time <= 0)
		{
			Debug.Log("初始时间不能为负数 = " + m_Time);
			return;
		}
		TimeCall ();
	}
	public void Play()
	{
		isBegin = true;
	}
	public void Pause()
	{
		isBegin = false;
	}
	
	void TimeCall()
	{
		m_Call (m_Time);
	}
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nmg10

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值