我在Unity上用C#编程。当我需要在某个时间间隔内重置变量时,我倾向于声明很多变量并使用Update()
函数来做我想要的。例如,这是我的重置技能冷却时间的代码(只要玩家按下射击键就会调用Shoot()
):
using UnityEngine;
using System.Collections;
public class Player : MonoBehavior
{
private bool cooldown = false;
private float shootTimer = 0f;
private const float ShootInterval = 3f;
void Update()
{
if (cooldown && Time.TimeSinceLevelLoad - shootTimer > ShootInterval)
{
cooldown = false;
}
}
void Shoot()
{
if (!cooldown)
{
cooldown = true;
shootTimer = Time.TimeSinceLevelLoad;
//and shoot bullet...
}
}
}
有没有更好的方法来做同样的事情?我认为我目前的代码非常混乱,可读性差。
非常感谢。
答案 0 :(得分:1)
使用Invoke
这将为您节省大量变数。
public class Player : MonoBehavior
{
private bool cooldown = false;
private const float ShootInterval = 3f;
void Shoot()
{
if (!cooldown)
{
cooldown = true;
//and shoot bullet...
Invoke("CoolDown", ShootInterval);
}
}
void CoolDown()
{
cooldown = false;
}
}
答案 1 :(得分:0)
没有ionic run android
的方法更容易控制:
Invoke