NavTab.cs 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. using UnityEngine;
  2. using System.Collections;
  3. public class NavTab : DGUI {
  4. public CallBackUtil.IntegerCallBack OnNavTabChanged;
  5. public Transform tabContainer;
  6. public NavTabButton[] tabBtns;
  7. public ViewStack viewStack;
  8. private int currentIndex = int.MinValue;
  9. private string[] titleArr;
  10. protected virtual void Awake()
  11. {
  12. tabContainer = transform.FindChild ("Tabs");
  13. tabBtns = new NavTabButton[tabContainer.childCount];
  14. for(int i=0; i<tabBtns.Length; i++)
  15. {
  16. NavTabButton btn = tabContainer.GetChild (i).gameObject.AddComponent<NavTabButton>();
  17. btn.OnClick = OnTabBtnClick;
  18. btn.enabled = false;
  19. tabBtns [i] = btn;
  20. }
  21. SetTitles (titleArr);
  22. }
  23. protected virtual void Start()
  24. {
  25. if(currentIndex == int.MinValue)
  26. navTabIndex = 0;
  27. }
  28. public void SetTitles(string[] titleArr)
  29. {
  30. this.titleArr = titleArr;
  31. if (titleArr == null)
  32. return;
  33. for(int i=0; i<tabBtns.Length; i++)
  34. {
  35. tabBtns [i].label.text = titleArr [i];
  36. }
  37. }
  38. public int navTabIndex
  39. {
  40. set{
  41. OnTabBtnClick (value);
  42. }
  43. get{
  44. return currentIndex;
  45. }
  46. }
  47. public void UnSelected()
  48. {
  49. OnTabBtnClick (-1);
  50. }
  51. private void OnTabBtnClick(int index)
  52. {
  53. if (currentIndex == index)
  54. return;
  55. for(int i=0; i<tabBtns.Length; i++)
  56. {
  57. NavTabButton btn = tabBtns [i];
  58. btn.enabled = i == index ? true : false;
  59. }
  60. currentIndex = index;
  61. if (viewStack != null)
  62. viewStack.viewIndex = currentIndex;
  63. if (OnNavTabChanged != null)
  64. OnNavTabChanged (index);
  65. }
  66. }