OperationData_ToggleMode.cs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. namespace ChivaXR.Op
  2. {
  3. using System.Collections;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using UnityEngine;
  7. using Sirenix.OdinInspector;
  8. /// <summary>
  9. /// 激活状态下的选择状态类型 -开关(off/on)等状态
  10. /// </summary>
  11. public abstract class OperationData_ToggleMode : OperationDataBase
  12. {
  13. public override OperationDataType OperationType { get { return OperationDataType.Toggle; } }
  14. //状态列表
  15. public List<string> toggleGroup = new List<string>();
  16. [SerializeField]
  17. [HideInInspector]
  18. private int toggleIndex;
  19. [ShowInInspector]
  20. [ValueDropdown("GetToggleName")]
  21. public int ToggleIndex
  22. {
  23. get { return toggleIndex; }
  24. set
  25. {
  26. if (toggleIndex != value)
  27. {
  28. toggleIndex = Mathf.Clamp(value, 0, toggleGroup.Count - 1);
  29. OpValue = toggleIndex;
  30. SetToggleDataValue();
  31. }
  32. }
  33. }
  34. private IEnumerable GetToggleName()
  35. {
  36. ValueDropdownList<int> valueDropDown = new ValueDropdownList<int>();
  37. for (int i = 0; i < toggleGroup.Count; i++)
  38. {
  39. valueDropDown.Add(toggleGroup[i], i);
  40. }
  41. return valueDropDown;
  42. }
  43. /// <summary>
  44. /// 获取开关列表
  45. /// </summary>
  46. /// <returns></returns>
  47. public string[] GetToggleListName()
  48. {
  49. return toggleGroup.ToArray();
  50. }
  51. public override void SetDataStateValue(float value)
  52. {
  53. int tempIndex = (int)value;
  54. if (ToggleIndex != tempIndex)
  55. {
  56. ToggleIndex = tempIndex;
  57. }
  58. }
  59. public abstract void SetToggleDataValue();
  60. }
  61. }