赞
踩
计时功能在游戏中是最常见不过的了,比如联盟中技能冷却倒计时,枪战类游戏中手枪不能连发,炸弹爆炸的倒计时,我们需要根据不同的需要去编写不同情况下的计时代码。
描述:
该帧开始的时间(只读)。此为自游戏启动以来的时间(以秒为单位)。 该值更倾向于提供游戏已经运行的时间,而不是每帧的时间。
注意:
在所有 Awake 函数都完成之后,Time.time 便会立即启动。在 Awake 函数期间,将取消定义 time 值。
eg:每隔一秒做某件事。
private float delayTime = 1;
private void Update()
{
if(Time.time >= delayTime)
{
//你要做的事......
delayTime += Time.time;
}
}
描述:
完成上一帧所用的时间(以秒为单位)(只读)。此属性提供当前帧和上一帧之间的时间。用这个属性计时误差较大,但也不会很明显。
eg:每隔一秒做某件事。
private float timer = 0;
private float delayTime = 1;
private void Update()
{
timer += Time.deltaTime;
if(timer >= delayTime)
{
//你要做的事......
timer = 0;
}
}
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);
来终止事件。
协程的使用可以看官方脚本手册中的这一节。
这里通过例子来体现,用的是协程中的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("时间到");
}
枪口的火花是以动画或者特效形式呈现,但是我们应该只在用户射击时才播放/显示它,并且每次播放完(自己设定的时间)我们都需要停止播放/显示。
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; } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。