在unity2D中的onMouseDown()函数之间等待一段时间

时间:2018-12-18 09:52:06

标签: unity3d game-physics unityscript game-development

我已经统一构建了这个2D项目,您可以点击块,然后使用onMouseDown()函数将其破坏。我的问题是在点击一个方块并将其摧毁之后,我如何让玩家等待一定的时间才能在游戏中点击另一个方块。我试过使用PlayerPrefs并从某个float变量中减去Time.deltaTime,但是它不起作用。

注意:所有块共享相同的销毁脚本!!!

2 个答案:

答案 0 :(得分:0)

如果它们都共享相同的脚本,则可以从定义一个静态布尔变量和一个静态事件开始,例如:

public static bool isLockedDown = false;
public static event Action onBlockDestroyed;

然后,在销毁功能上,首先保持对此锁定状态的检查。如果为假,则销毁该锁,将其设置为true,然后调用将由另一个脚本读取的静态侦听器,这将启动协程,该协程将在给定的几秒钟后将此静态锁变为false。

public class Block : MonoBehaviour {

    void DestroyBlock()
    {
        if(isLockedDown)
            return;

        isLockedDown = true;
        onBlockDestroyed.Invoke();
        ////destroy block///
    }
}

public classBlockManager : MonoBehaviour {
    void Awake()
    {
        Block.onBlockDestroyed += BeginUnlocking
    }

    void BeginUnlocking()
    {
        StartCoroutine(UnlockTimer);
    }

    IEnumerator UnlockTimer()
    {
        yield return new WaitForSeconds(1f);
        BLock.isLockedDown = false;
    }
}

答案 1 :(得分:0)

float waitTime = 1.5f;
static float lastClickTime = float.NegativeInfinity;

void OnMouseDown ()
{
    float time = Time.time;
    if( time > ( lastClickTime + waitTime ) )
    {
        lastClickTime = time;
        DestroyThisBlock();
    }
}