Если они все используют один и тот же сценарий, вы можете начать с определения статической переменной bool и статического события, скажем:
public static bool isLockedDown = false;
public static event Action onBlockDestroyed;
Затем, при функции уничтожения, сначала сохраните проверку об этом заблокированным,Если это false, уничтожьте, установите блокировку на 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;
}
}