using UnityEngine;
public class Delay : MonoBehaviour
{
public float delayTime = 3.0f;
private bool _isDelayActive;
private bool _start;
private void OnEnable()
{
if (_start)
{
// 注:手动重复打开会重置激活时间
if (!_isDelayActive)
IndependentEffectManager.AddParticleDelay(this);
else
_isDelayActive = false;
}
}
private void Start()
{
_start = true;
OnEnable();
}
///
/// 由IndependentEffectManager推送的开启事件
///
public void DelayActive()
{
// 如果自身已经激活,则不做任何处理
if (gameObject.activeSelf)
_isDelayActive = false;
// 如果父节点尚未激活,回退到初始状态
else if (transform.parent != null && !transform.parent.gameObject.activeInHierarchy)
_isDelayActive = false;
else
_isDelayActive = true;
gameObject.SetActive(true);
}
///
/// 重置延迟开启状态 - 如果当前在激活节点下,则重新开始延迟
///
public void ClearDelay()
{
IndependentEffectManager.RemoveParticleDelay(this);
_isDelayActive = false;
gameObject.SetActive(true);
}
}