ScaleTimeInfo.cs 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. using UnityEngine;
  2. using System.Collections;
  3. public class ScaleTimeInfo : Singleton<ScaleTimeInfo>
  4. {
  5. private float scale;
  6. private float fadeinTime;
  7. private float continueTime;
  8. private float fadeoutTime;
  9. private bool canInterrupt;
  10. private float currentTime;
  11. private bool isEnabled;
  12. private float startTime;
  13. public bool Enable
  14. {
  15. get { return isEnabled; }
  16. }
  17. public float CurrentScale
  18. {
  19. get
  20. {
  21. if (isEnabled)
  22. {
  23. if (currentTime < fadeinTime)
  24. return (1 + (scale - 1) * currentTime / fadeinTime);
  25. else if (currentTime <= fadeinTime + continueTime)
  26. {
  27. return scale;
  28. }
  29. else if (currentTime < fadeinTime + continueTime + fadeoutTime)
  30. return (scale + (1 - scale) * (currentTime - (fadeinTime + continueTime)) / fadeoutTime);
  31. else
  32. return 1;
  33. }
  34. else
  35. return 1;
  36. }
  37. }
  38. public void Start(float scale, float continueTime, float fadeinSpeed, float fadeoutSpeed, bool canInterrupt)
  39. {
  40. if (isEnabled && !this.canInterrupt)
  41. return;
  42. this.scale = scale;
  43. this.continueTime = continueTime;
  44. fadeinTime = fadeinSpeed > 1e-5 ? 1 / fadeinSpeed : 0;
  45. fadeoutTime = fadeoutSpeed > 1e-5 ? 1 / fadeoutSpeed : 0;
  46. this.canInterrupt = canInterrupt;
  47. Time.timeScale = System.Math.Abs(fadeinTime) < Mathf.Epsilon ? scale : 1;
  48. currentTime = 0f;
  49. startTime = Time.unscaledTime;
  50. isEnabled = true;
  51. }
  52. public void Update(float deltaTime)
  53. {
  54. //if (isEnabled)
  55. //{
  56. // currentTime = Mathf.Max(Time.unscaledTime - startTime, 0);
  57. // if (currentTime < fadeinTime + continueTime + fadeoutTime)
  58. // Time.timeScale = CurrentScale;
  59. // else
  60. // Stop();
  61. //}
  62. }
  63. public void Stop()
  64. {
  65. Time.timeScale = 1;
  66. isEnabled = false;
  67. }
  68. }