TimeScale.cs 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. using UnityEngine;
  2. using System.Collections;
  3. namespace YLBattle
  4. {
  5. /// <summary>
  6. /// 时间比例校正.
  7. /// </summary>
  8. public class TimeScale : MonoBehaviour
  9. {
  10. bool isPause;
  11. float curTime;
  12. private static TimeScale mInstance;
  13. /// <summary>
  14. /// 暂停时间周期 引用计数
  15. /// </summary>
  16. float mPauseTimeCount;
  17. /// <summary>
  18. /// 旧的时间
  19. /// </summary>
  20. float mOldTime;
  21. /// <summary>
  22. /// 获取单键
  23. /// </summary>
  24. /// <returns>单键实例</returns>
  25. public static TimeScale Instance()
  26. {
  27. if (mInstance == null)
  28. {
  29. GameObject obj = new GameObject("TimeScale");
  30. mInstance = obj.AddComponent<TimeScale>();
  31. }
  32. return mInstance;
  33. }
  34. /// <summary>
  35. /// 更新
  36. /// </summary>
  37. void Update()
  38. {
  39. if (isPause)
  40. {
  41. return;
  42. }
  43. //float targetFrameRate = (float)Application.targetFrameRate;
  44. //if (targetFrameRate > 30)
  45. //{
  46. // Time.timeScale = 1;
  47. //}
  48. //else if (targetFrameRate <= 12)
  49. //{
  50. // Time.timeScale = .4f;
  51. //}
  52. //else
  53. //{
  54. //Time.timeScale = targetFrameRate / 30;
  55. //}
  56. }
  57. /// <summary>
  58. /// 继续重载
  59. /// </summary>
  60. public void Pause()
  61. {
  62. mOldTime = Time.realtimeSinceStartup;
  63. isPause = true;
  64. Time.timeScale = 0;
  65. mPauseTimeCount += 1;
  66. }
  67. /// <summary>
  68. /// 继续 播放
  69. /// </summary>
  70. public void Play()
  71. {
  72. mPauseTimeCount -= 1;
  73. if (mPauseTimeCount <= 0)
  74. {
  75. isPause = false;
  76. Time.timeScale = 1;
  77. mPauseTimeCount = 0;
  78. }
  79. }
  80. /// <summary>
  81. /// 获取isPause
  82. /// </summary>
  83. /// <returns></returns>
  84. public bool GetPause()
  85. {
  86. return isPause;
  87. }
  88. /// <summary>
  89. /// 强制取消暂停
  90. /// </summary>
  91. /// <returns></returns>
  92. public void PauseOver()
  93. {
  94. isPause = false;
  95. Time.timeScale = 1;
  96. this.mPauseTimeCount = 0;
  97. }
  98. }
  99. }