UIToggleList.cs 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. using System.Collections.Generic;
  2. using UnityEngine;
  3. namespace Fort23.Mono
  4. {
  5. public class UIToggleList : MonoBehaviour
  6. {
  7. [HideInInspector] public UIToggleWidgetBasic lastSelectObj;
  8. [Header("重复点击时隐藏")] public bool isRepeatHind;
  9. [Header("是否默认选择")] public bool isRDefaultShow;
  10. public int index=-1;
  11. public UIToggleWidgetBasic[] childObj;
  12. [HideInInspector] public List<UIToggleWidgetBasic> _allChildObj = new List<UIToggleWidgetBasic>();
  13. private void Awake()
  14. {
  15. if (childObj != null && childObj.Length > 0)
  16. {
  17. for (int i = 0; i < childObj.Length; i++)
  18. {
  19. if (childObj[i] == null)
  20. {
  21. continue;
  22. }
  23. childObj[i].Init(this);
  24. _allChildObj.Add(childObj[i]);
  25. }
  26. if (isRDefaultShow)
  27. ClickWidget(childObj[0]);
  28. }
  29. }
  30. public void AddToggleWidget(UIToggleWidgetBasic toggleWidget)
  31. {
  32. if (toggleWidget == null)
  33. {
  34. return;
  35. }
  36. toggleWidget.Init(this);
  37. _allChildObj.Add(toggleWidget);
  38. }
  39. public void ClickWidget(UIToggleWidgetBasic widget)
  40. {
  41. ShowTooge(widget);
  42. }
  43. public void ShowTargetIndex(int index)
  44. {
  45. ClickWidget(_allChildObj[index]);
  46. }
  47. protected void ShowTooge(UIToggleWidgetBasic widget)
  48. {
  49. if (isRepeatHind && lastSelectObj == widget)
  50. {
  51. lastSelectObj.Hind();
  52. lastSelectObj = null;
  53. return;
  54. }
  55. lastSelectObj = widget;
  56. for (int i = 0; i < _allChildObj.Count; i++)
  57. {
  58. if (_allChildObj[i] == null)
  59. {
  60. continue;
  61. }
  62. if (_allChildObj[i] != widget)
  63. {
  64. _allChildObj[i].Hind();
  65. }
  66. else
  67. {
  68. _allChildObj[i].Show();
  69. index = i;
  70. }
  71. }
  72. }
  73. public void GetChildObj()
  74. {
  75. UIToggleWidgetBasic[] uiToggleWidgetBasics = transform.GetComponentsInChildren<UIToggleWidgetBasic>();
  76. childObj = uiToggleWidgetBasics;
  77. if (childObj != null && childObj.Length > 0)
  78. {
  79. for (int i = 0; i < childObj.Length; i++)
  80. {
  81. if (childObj[i] == null)
  82. {
  83. continue;
  84. }
  85. childObj[i].Init(this);
  86. _allChildObj.Add(childObj[i]);
  87. }
  88. if (isRDefaultShow)
  89. ClickWidget(childObj[0]);
  90. }
  91. }
  92. public void Hide()
  93. {
  94. index = -1;
  95. foreach (var cUIToggleWidgetBasic in _allChildObj)
  96. {
  97. cUIToggleWidgetBasic.Hind();
  98. }
  99. }
  100. public void Clear()
  101. {
  102. index = -1;
  103. _allChildObj.Clear();
  104. }
  105. }
  106. }