DelayAction.cs 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. using System;
  2. namespace CommonUnity3D.UGUIAction
  3. {
  4. /// <summary>
  5. /// 延迟动作.
  6. /// DelayAction action = new DelayAction();
  7. /// action.Duration = 1;
  8. /// </summary>
  9. public class DelayAction : ActionBase
  10. {
  11. public const string ACTIONTYPE = "DelayAction";
  12. private float mTotalTime = 0.0f;
  13. private float mCurrentTime = 0.0f;
  14. public float Duration
  15. {
  16. get
  17. {
  18. return mTotalTime;
  19. }
  20. set
  21. {
  22. mTotalTime = value;
  23. }
  24. }
  25. public float CurrentTime
  26. {
  27. get
  28. {
  29. return mCurrentTime;
  30. }
  31. }
  32. public ActionFinishHandler UpdateCallBack { get; set; }
  33. public override void onUpdate(IActionCompment unit, float deltaTime)
  34. {
  35. if (deltaTime == 0 || (mCurrentTime == mTotalTime))
  36. return;
  37. float previousTime = mCurrentTime;
  38. float restTime = mTotalTime - mCurrentTime;
  39. mCurrentTime = Math.Min(mTotalTime, mCurrentTime + deltaTime);
  40. if (previousTime < mTotalTime && mCurrentTime >= mTotalTime)
  41. {
  42. mIsEnd = true;
  43. }
  44. if(UpdateCallBack != null)
  45. {
  46. UpdateCallBack.Invoke(unit);
  47. }
  48. }
  49. public override void onStart(IActionCompment unit)
  50. {
  51. }
  52. public override bool IsEnd()
  53. {
  54. return mIsEnd;
  55. }
  56. public override string GetActionType()
  57. {
  58. return ACTIONTYPE;
  59. }
  60. }
  61. }