ProcessBase.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. namespace ChivaXR
  2. {
  3. using UnityEngine;
  4. public delegate void ProcessEventHandler(ProcessBase process);
  5. public class ProcessBase : MonoBehaviour
  6. {
  7. [HideInInspector]
  8. public bool isPlaying;
  9. [HideInInspector]
  10. public ProcessElement currentProcessElement;
  11. public event ProcessEventHandler Process_EnterEvent;
  12. public event ProcessEventHandler Process_UseEvent;
  13. public event ProcessEventHandler Process_ExitEvent;
  14. public event ProcessEventHandler Process_HalfExitEvent;
  15. /// <summary>
  16. /// 进入流程
  17. /// </summary>
  18. /// <param name="p"></param>
  19. public virtual void Enter(ProcessElement p)
  20. {
  21. currentProcessElement = p;
  22. isPlaying = true;
  23. Process_EnterEvent?.Invoke(this);
  24. }
  25. /// <summary>
  26. /// 完成离开
  27. /// </summary>
  28. public virtual void Exit()
  29. {
  30. if (!isPlaying) return;
  31. isPlaying = false;
  32. Debug.Log("Exit" + currentProcessElement.stepID + "步骤");
  33. Process_ExitEvent?.Invoke(this);
  34. currentProcessElement.Exit();
  35. }
  36. /// <summary>
  37. /// 中途退出流程
  38. /// </summary>
  39. public virtual void QuitHalfWay()
  40. {
  41. isPlaying = false;
  42. Process_HalfExitEvent?.Invoke(this);
  43. }
  44. /// <summary>
  45. /// 设置为进入状态
  46. /// </summary>
  47. public virtual void SetEnterState()
  48. {
  49. }
  50. /// <summary>
  51. /// 设置为完成状态
  52. /// </summary>
  53. public virtual void SetExitState()
  54. {
  55. }
  56. public virtual string GetPBDescribe()
  57. {
  58. return this.name;
  59. }
  60. }
  61. }