diff options
author | chai <215380520@qq.com> | 2023-10-27 11:05:14 +0800 |
---|---|---|
committer | chai <215380520@qq.com> | 2023-10-27 11:05:14 +0800 |
commit | 766cdff5ffa72b65d7f106658d1603f47739b2ba (patch) | |
tree | 34d7799a94dfa9be182825577583c0fa6dc935f7 /GameCode/DelayEvent.cs |
+ init
Diffstat (limited to 'GameCode/DelayEvent.cs')
-rw-r--r-- | GameCode/DelayEvent.cs | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/GameCode/DelayEvent.cs b/GameCode/DelayEvent.cs new file mode 100644 index 0000000..0ebea56 --- /dev/null +++ b/GameCode/DelayEvent.cs @@ -0,0 +1,61 @@ +using System.Collections; +using UnityEngine; +using UnityEngine.Events; + +public class DelayEvent : MonoBehaviour +{ + public UnityEvent delayedEvent; + + public float time = 1f; + + public bool auto; + + public bool repeating; + + public bool usedTimeScale = true; + + private void Start() + { + CodeAnimation componentInParent = GetComponentInParent<CodeAnimation>(); + if ((bool)componentInParent) + { + time /= componentInParent.animations[0].animationSpeed; + } + if (auto) + { + Go(); + } + } + + public void Go() + { + StartCoroutine(DelayEventCall()); + } + + private IEnumerator DelayEventCall() + { + yield return 1; + if (usedTimeScale) + { + yield return new WaitForSeconds(time); + } + else + { + yield return new WaitForSecondsRealtime(time); + } + if (base.enabled) + { + delayedEvent.Invoke(); + if (repeating) + { + Go(); + } + } + } + + public void DoEvent() + { + StopAllCoroutines(); + delayedEvent.Invoke(); + } +} |