TopBarView.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5. using JCUnityLib;
  6. /* 主界面右上方信息栏 */
  7. public class TopBarView : JCUnityLib.ViewBase
  8. {
  9. [SerializeField] Text[] itemValueTexts;
  10. [SerializeField] Button[] itemPlusButtons;
  11. int[] itemValues = {-1, -1, -1};
  12. public static TopBarView ins;
  13. public void Awake()
  14. {
  15. ins = this;
  16. }
  17. public void OnDestroy()
  18. {
  19. if (ins == this) ins = null;
  20. }
  21. void Start()
  22. {
  23. ResetSiblingIndex();
  24. if (CommonConfig.needToExamine) {
  25. Transform tf = transform.Find("TopBar");
  26. for (int i = 0; i < tf.childCount; i++) {
  27. if (tf.GetChild(i).name.StartsWith("Item")) {
  28. tf.GetChild(i).gameObject.SetActive(false);
  29. }
  30. }
  31. }
  32. if (CommonConfig.ReleaseVersion2) {
  33. Transform diamond = transform.Find("TopBar/Item");
  34. diamond.localPosition += Vector3.right * 87;
  35. transform.Find("TopBar/IconLebo").gameObject.SetActive(false);
  36. }
  37. }
  38. void Update()
  39. {
  40. if (itemValues[0] != LoginMgr.myUserInfo.diamond) {
  41. itemValues[0] = LoginMgr.myUserInfo.diamond;
  42. itemValueTexts[0].text = itemValues[0].ToString();
  43. }
  44. // if (itemValues[1] != LoginMgr.myUserInfo.coin) {
  45. // itemValues[1] = LoginMgr.myUserInfo.coin;
  46. // itemValueTexts[1].text = itemValues[1].ToString();
  47. // }
  48. // if (itemValues[2] != LoginMgr.myUserInfo.integral) {
  49. // itemValues[2] = LoginMgr.myUserInfo.integral;
  50. // itemValueTexts[2].text = itemValues[2].ToString();
  51. // }
  52. }
  53. private static HashSet<ViewBase> _needShowItLockers = new HashSet<ViewBase>();
  54. public static void NeedShowIt(ViewBase locker) {
  55. _needShowItLockers.Add(locker);
  56. ins?.ResetSiblingIndex();
  57. }
  58. public static void DontNeedShowIt(ViewBase locker) {
  59. _needShowItLockers.Remove(locker);
  60. ins?.ResetSiblingIndex();
  61. }
  62. private void ResetSiblingIndex()
  63. {
  64. //如果作为父节点的ViewMgr已OnDestroy,那再操作子节点就会报错。
  65. if (!ViewMgr.HasInstance()) return;
  66. //该节点重排序
  67. int maxOrder = -1;
  68. foreach (var item in _needShowItLockers) {
  69. int sortOrder = item.transform.GetSiblingIndex();
  70. if (sortOrder > maxOrder) maxOrder = sortOrder;
  71. }
  72. transform.SetSiblingIndex(maxOrder + 1);
  73. }
  74. public void GoToSetup() {
  75. AudioMgr.ins.PlayBtn();
  76. ViewMgr.Instance.ShowView<SettingsView>();
  77. }
  78. public void GoToShop()
  79. {
  80. AudioMgr.ins.PlayBtn();
  81. if (ShopView.ins) return;
  82. ViewMgr.Instance.ShowView<ShopView>();
  83. }
  84. public void GoToLebo()
  85. {
  86. AudioMgr.ins.PlayBtn();
  87. if (ScreenProjectionView.ins) {
  88. GameObject o = ScreenProjectionView.ins.gameObject;
  89. JCUnityLib.CanvasUtils.PlusSortOrder(gameObject, o, 1);
  90. o.SetActive(true);
  91. } else {
  92. GameObject o = GameObject.Instantiate(SceneResourceManager.Instance.GetPrefab("ScreenProjectionView"));
  93. JCUnityLib.CanvasUtils.PlusSortOrder(gameObject, o, 1);
  94. }
  95. }
  96. }