diff options
author | chai <chaifix@163.com> | 2022-02-18 16:19:48 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2022-02-18 16:19:48 +0800 |
commit | 1b79ca871dff7a56dad8a9857f151011c1cfd9e3 (patch) | |
tree | 1f456a8e9f842670263c2b61d97a124c90515014 /JamHelper/Assets/JamUtils/Scripts/Utils/CustomExecutionOrder.cs | |
parent | 2ac3ab0c6a315e678d21aa6bd4a0a660a2c46acf (diff) |
+CustomExecutionOrder
Diffstat (limited to 'JamHelper/Assets/JamUtils/Scripts/Utils/CustomExecutionOrder.cs')
-rw-r--r-- | JamHelper/Assets/JamUtils/Scripts/Utils/CustomExecutionOrder.cs | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/JamHelper/Assets/JamUtils/Scripts/Utils/CustomExecutionOrder.cs b/JamHelper/Assets/JamUtils/Scripts/Utils/CustomExecutionOrder.cs new file mode 100644 index 0000000..acef40f --- /dev/null +++ b/JamHelper/Assets/JamUtils/Scripts/Utils/CustomExecutionOrder.cs @@ -0,0 +1,72 @@ +using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace JamUtils
+{
+ [DefaultExecutionOrder(ORDER_EXECUTION)] + public class CustomExecutionOrder : MonoBehaviour
+ {
+ private const int ORDER_EXECUTION = -98; +
+ static CustomExecutionOrder _instance;
+
+ public static CustomExecutionOrder Instance
+ {
+ get
+ {
+ if (_instance == null)
+ {
+ GameObject inst = new GameObject("CustomExecutionOrder");
+ inst.hideFlags = HideFlags.DontSave;
+ DontDestroyOnLoad(inst);
+
+ _instance = inst.AddComponent<CustomExecutionOrder>();
+ }
+ return _instance;
+ }
+ }
+
+ public event Action beforeFixedUpdate;
+ public event Action afterFixedUpdate;
+
+ public event Action beforeUpdate;
+ public event Action afterUpdate;
+
+ private void Awake()
+ {
+ StartCoroutine(WaitForEndOfFrame());
+ StartCoroutine(WaitForFixedUpdate()); + }
+
+ private IEnumerator WaitForEndOfFrame()
+ {
+ while (true)
+ {
+ yield return new WaitForEndOfFrame();
+ if (afterUpdate != null)
+ afterUpdate();
+ if (beforeFixedUpdate != null)
+ beforeFixedUpdate();
+ }
+ }
+
+ private IEnumerator WaitForFixedUpdate()
+ {
+ while (true)
+ {
+ yield return new WaitForFixedUpdate();
+ if (afterFixedUpdate != null)
+ afterFixedUpdate();
+ }
+ }
+
+ private void Update()
+ {
+ if (beforeUpdate != null)
+ beforeUpdate();
+ }
+
+ }
+}
\ No newline at end of file |