有没有更好的方法来重置Unity的冷却时间?

时间:2015-08-18 10:59:08

标签: c# unity3d

我在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...
        }
    }
}

有没有更好的方法来做同样的事情?我认为我目前的代码非常混乱,可读性差。

非常感谢。

2 个答案:

答案 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