unity中计时功能的实现方法总结

计时功能在游戏中是最常见不过的了,比如联盟中技能冷却倒计时,枪战类游戏中手枪不能连发,炸弹爆炸的倒计时,我们需要根据不同的需要去编写不同情况下的计时代码。

1.用Time类中的属性

法1:Time.time

描述:
该帧开始的时间(只读)。此为自游戏启动以来的时间(以秒为单位)。 该值更倾向于提供游戏已经运行的时间,而不是每帧的时间。

注意:
在所有 Awake 函数都完成之后,Time.time 便会立即启动。在 Awake 函数期间,将取消定义 time 值。

eg:每隔一秒做某件事。

private float delayTime = 1;
private void Update()
{
	if(Time.time >= delayTime)
	{
		//你要做的事......
		delayTime += Time.time;
	}
}

法2:Time.deltaTime

描述:
完成上一帧所用的时间(以秒为单位)(只读)。此属性提供当前帧和上一帧之间的时间。用这个属性计时误差较大,但也不会很明显。

eg:每隔一秒做某件事。

private float timer = 0;
private float delayTime = 1;
private void Update()
{
	timer += Time.deltaTime;
	if(timer >= delayTime)
	{
		//你要做的事......
		timer = 0;
	}
}

2.InvokeRepeating

public void InvokeRepeating (string methodName, float time, float repeatRate);

描述:
在 time 秒后调用 methodName 方法,然后每 repeatRate 秒调用一次。

注意:
如果将时间刻度设置为 0,该函数不起作用。

eg:每隔一秒做某件事。

 	void Start()
    {
        InvokeRepeating("事件/方法", 1.0f, 1.0f);
    }

    void 事件/方法()
    {
        //......
    }

使用CancelInvoke(string methodName);来终止事件。

3.使用协程:

协程的使用可以看官方脚本手册中的这一节
这里通过例子来体现,用的是协程中的WaitForSecond方法:
eg:倒计时三秒。

private void Start()
{
	StartCoroutine(TimeFunc(3));//开启协程
}
private IEnumerator TimeFunc(float TimeCount)
{
	do{
		print(TimeCount);
		yield return new WaitForSecond(1);//在每帧update之后进行等待一秒
		TimeCount -= 1;
	}while(TimeCount > 0)
	print("时间到");
}

4.动画、视频的播放时间有相应的类及属性去获取

5.最后来一个项目中的应用:

枪口的火花是以动画或者特效形式呈现,但是我们应该只在用户射击时才播放/显示它,并且每次播放完(自己设定的时间)我们都需要停止播放/显示。

public GameObject fireEffect;//开火特效
private float hideTimer;//计时器
public float displayTime = 0.3f;//枪口开火特效播放时间
private void Update
{
	//如果火光启用并到了隐藏时间那么禁用即可。
	if(fireEffect.activeInHierarchy && Time.time >= hideTimer)
	{
		fireEffect.SetActive(false);
	}
	if(Input.GetMouseButtonDown(0))//按下鼠标左键射击
	{
		fireEffect.SetActive(true);
		hideTimer = Time.time + displayTime;
	}
}
  • 14
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值