TimeScaleEvent.cs 857 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. using System;
  2. using UnityEngine;
  3. namespace Xft
  4. {
  5. public class TimeScaleEvent : XftEvent
  6. {
  7. public TimeScaleEvent(XftEventComponent owner) : base(XEventType.TimeScale, owner)
  8. {
  9. }
  10. public override void Reset()
  11. {
  12. base.Reset();
  13. if (this.mIsFirst)
  14. {
  15. this.mOriScale = Time.timeScale;
  16. }
  17. Time.timeScale = this.mOriScale;
  18. this.mIsFirst = false;
  19. }
  20. public override void OnBegin()
  21. {
  22. base.OnBegin();
  23. Time.timeScale = this.m_owner.TimeScale;
  24. }
  25. public override void Update(float deltaTime)
  26. {
  27. this.m_elapsedTime += deltaTime;
  28. float elapsedTime = this.m_elapsedTime;
  29. if (elapsedTime / this.m_owner.TimeScale > this.m_owner.TimeScaleDuration)
  30. {
  31. Time.timeScale = this.mOriScale;
  32. }
  33. }
  34. protected bool mIsFirst = true;
  35. protected float mOriScale = 1f;
  36. }
  37. }