Unity 框架

YieldWaitTool.cs 1.4KB

123456789101112131415161718192021222324252627282930313233343536
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using UnityEngine;
  5. namespace TFramework
  6. {
  7. public static class YieldWaitTool
  8. {
  9. static WaitForEndOfFrame _waitForEndOfFrame = new WaitForEndOfFrame();
  10. static WaitForFixedUpdate _waitForFixedUpdate = new WaitForFixedUpdate();
  11. static Dictionary<float, WaitForSeconds> _waitForSeconds = new Dictionary<float, WaitForSeconds>();
  12. static Dictionary<float, WaitForSecondsRealtime> _waitForSecondsRealtime = new Dictionary<float, WaitForSecondsRealtime>();
  13. public static YieldInstruction YieldWaitForEndOfFrame() => _waitForEndOfFrame;
  14. public static YieldInstruction YieldWaitForFixedUpdate() => _waitForFixedUpdate;
  15. public static YieldInstruction YieldWaitForSeconds(float second)
  16. {
  17. float _second = (float)Math.Round(second,2);
  18. if (!_waitForSeconds.ContainsKey(_second))
  19. _waitForSeconds.Add(_second, new WaitForSeconds(_second));
  20. return _waitForSeconds[_second];
  21. }
  22. public static IEnumerator YieldWaitForSecondsRealtime(float second)
  23. {
  24. float _second = (float)Math.Round(second, 2);
  25. if (!_waitForSecondsRealtime.ContainsKey(_second))
  26. _waitForSecondsRealtime.Add(_second, new WaitForSecondsRealtime(_second));
  27. return _waitForSecondsRealtime[_second];
  28. }
  29. }
  30. }