OpTrigger_OperationButtonClick.cs 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using ChivaXR.Op;
  4. using UnityEngine;
  5. using UnityEngine.Events;
  6. using UnityEngine.UI;
  7. public class OpTrigger_OperationButtonClick : OperationData_TriggerMode
  8. {
  9. [SerializeField]
  10. private Button m_ClickButton;
  11. [SerializeField]
  12. private UnityEvent m_ClickUnityEvent;
  13. [SerializeField]
  14. private UnityEvent m_PrimitiveUnityEvent;
  15. private bool m_IsClicked;
  16. /// <summary>
  17. /// 学习模式延迟提示高亮时长
  18. /// </summary>
  19. private float timer;
  20. public override void SetDataStateValue(float value)
  21. {
  22. switch (value)
  23. {
  24. case 0:
  25. m_ClickButton.GetComponent<Image>().color = new Color(1, 1, 1, 1);
  26. m_IsClicked = false;
  27. m_PrimitiveUnityEvent?.Invoke();
  28. break;
  29. case 1:
  30. m_ClickButton.GetComponent<Image>().color = new Color(1, 1, 1, 1);
  31. m_IsClicked = false;
  32. break;
  33. }
  34. }
  35. public override bool TriggerCondition()
  36. {
  37. if (OperateSetting.Instance.m_CurrentOperationMode == OperationMode.Learn)
  38. {
  39. HightColorEvent.ChangeImageAppha(m_ClickButton.GetComponent<Image>());
  40. timer += Time.deltaTime;
  41. if (timer > 1)
  42. {
  43. return true;
  44. }
  45. else
  46. {
  47. return false;
  48. }
  49. }
  50. if (OperateSetting.Instance.ToolPackUILogic.GetHint())
  51. {
  52. HightColorEvent.ChangeImageAppha(m_ClickButton.GetComponent<Image>());
  53. }
  54. else
  55. {
  56. m_ClickButton.GetComponent<Image>().color = new Color(1, 1, 1, 1);
  57. }
  58. return m_IsClicked;
  59. }
  60. protected override void OnOperationDataStatusChanged(OperationDataStatus status)
  61. {
  62. switch (status)
  63. {
  64. case OperationDataStatus.InActive:
  65. m_ClickButton.GetComponent<Image>().color = new Color(1, 1, 1, 1);
  66. break;
  67. case OperationDataStatus.Listening:
  68. m_ClickButton.onClick.AddListener(delegate
  69. {
  70. m_ClickUnityEvent?.Invoke();
  71. m_IsClicked = true;
  72. });
  73. break;
  74. }
  75. }
  76. }