using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; using UnityEngine.Serialization; public class HoldingTime : MonoBehaviour { [Header("오브젝트 유지 시간")] [Range(0, 10f)] public float duration = 1f; private void OnEnable() { CancelInvoke(); Invoke("TimeOver", duration); } private void OnDisable() { CancelInvoke(); } public void TimerStart() { //if (gameObject.activeSelf) // CancelInvoke(); gameObject.SetActive(true); } public void TimerReStart() { CancelInvoke(); Invoke("TimeOver", duration); gameObject.SetActive(true); } [System.Serializable] public class TimeOverEvent : UnityEvent { } [FormerlySerializedAs("onTimeOver")] [SerializeField] private TimeOverEvent OnTimeOver = new TimeOverEvent(); public bool FORCE = false; public bool HIDE = true; void TimeOver() { if (gameObject.activeInHierarchy || FORCE) OnTimeOver.Invoke(null); if (HIDE) gameObject.SetActive(false); } }