我已经统一构建了这个2D项目,您可以点击块,然后使用onMouseDown()函数将其破坏。我的问题是在点击一个方块并将其摧毁之后,我如何让玩家等待一定的时间才能在游戏中点击另一个方块。我试过使用PlayerPrefs并从某个float变量中减去Time.deltaTime,但是它不起作用。
注意:所有块共享相同的销毁脚本!!!
答案 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();
}
}