UI_RightTopMenu.cs 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5. using System;
  6. using DG.Tweening;
  7. /// <summary>
  8. /// 右上角菜单
  9. /// </summary>
  10. public class UI_RightTopMenu : MonoBehaviour
  11. {
  12. private static UI_RightTopMenu pInit = null;
  13. private GameObject btnGemAdd = null;
  14. private GameObject btnGoldAdd = null;
  15. private GameObject btnResAdd = null;
  16. private GameObject gemEffect = null;
  17. private GameObject goldEffect = null;
  18. private GameObject resEffect = null;
  19. private GameObject btnTaskCard = null;
  20. GameObject effectTuoWei = null;
  21. GameObject effectTiShi = null;
  22. private Text txt_Gem = null;
  23. private Text txt_Gold = null;
  24. private Text txt_Res = null;
  25. private const float _spaceTime = 0;
  26. private float _curTime = 0.5f;
  27. private int lastCash = 0;
  28. private int lastGold = 0;
  29. private int lastRes = 0;
  30. /// <summary>
  31. /// 单例
  32. /// </summary>
  33. public static UI_RightTopMenu Instance
  34. {
  35. get
  36. {
  37. return pInit;
  38. }
  39. }
  40. /// <summary>
  41. /// 创建
  42. /// </summary>
  43. /// <param name="parentTran">父Transform</param>
  44. public static void Create(Transform parentTran,bool show = false)
  45. {
  46. if (show == false)
  47. {
  48. return;
  49. }
  50. ResourceHelper.Instance.LoadAssetBundle("UI_RightTopMenu", (ab) =>
  51. {
  52. if (ab != null)
  53. {
  54. GameObject uiObj = Instantiate(ab.LoadAsset<GameObject>("UI_RightTopMenu"), parentTran);
  55. pInit = uiObj.AddComponent<UI_RightTopMenu>();
  56. pInit.Init();
  57. }
  58. });
  59. }
  60. /// <summary>
  61. /// 初始化
  62. /// </summary>
  63. private void Init()
  64. {
  65. _curTime = _spaceTime;
  66. txt_Gem = transform.Find("GemBG/txt_Gem").GetComponent<Text>();
  67. txt_Gold = transform.Find("GoldBG/txt_Gold").GetComponent<Text>();
  68. txt_Res = transform.Find("ResBG/txt_Res").GetComponent<Text>();
  69. btnGemAdd = transform.Find("GemBG/btn_GemAdd").gameObject;
  70. EventTriggerListener.Get(btnGemAdd).onClick = GemAdd_Click;
  71. btnGoldAdd = transform.Find("GoldBG/btn_GoldAdd").gameObject;
  72. EventTriggerListener.Get(btnGoldAdd).onClick = GoldAdd_Click;
  73. btnResAdd = transform.Find("ResBG/btn_ResAdd").gameObject;
  74. EventTriggerListener.Get(btnResAdd).onClick = ResAdd_Click;
  75. gemEffect = transform.Find("GemBG/UI_kouchu_saoguang").gameObject;
  76. goldEffect = transform.Find("GoldBG/UI_kouchu_saoguang").gameObject;
  77. resEffect = transform.Find("ResBG/UI_kouchu_saoguang").gameObject;
  78. btnTaskCard = transform.Find("btn_TaskCard").gameObject;
  79. effectTuoWei = btnTaskCard.transform.Find("UI_kapai_feiru_tuowei").gameObject;
  80. effectTiShi = btnTaskCard.transform.Find("UI_baoguo_shouqu_tishi").gameObject;
  81. // 任务卡背包
  82. EventTriggerListener.Get(btnTaskCard).onClick = (btnObj) =>
  83. {
  84. PanelHelper.Instance.ShowPanel("UI_PacketWindow", null, 5);
  85. // PanelHelper.Instance.ShowPanel("UI_TaskCardWindow");
  86. };
  87. lastCash = UserProxy.Instance.player.baseInfo.cash;
  88. lastGold = UserProxy.Instance.player.baseInfo.gold;
  89. lastRes = UserProxy.Instance.player.baseInfo.resPoint;
  90. txt_Gem.text = UserProxy.Instance.player.baseInfo.cash.ToString();
  91. txt_Gold.text = UserProxy.Instance.player.baseInfo.gold.ToString();
  92. txt_Res.text = UserProxy.Instance.player.baseInfo.resPoint.ToString();
  93. }
  94. private void Update()
  95. {
  96. _curTime -= Time.deltaTime;
  97. if (_curTime <= 0)
  98. {
  99. _curTime = _spaceTime;
  100. // 宝石
  101. if (lastCash != UserProxy.Instance.player.baseInfo.cash)
  102. {
  103. lastCash = UserProxy.Instance.player.baseInfo.cash;
  104. txt_Gem.text = UserProxy.Instance.player.baseInfo.cash.ToString();
  105. gemEffect.SetActive(false);
  106. gemEffect.SetActive(true);
  107. }
  108. // 金币
  109. if (lastGold != UserProxy.Instance.player.baseInfo.gold)
  110. {
  111. lastGold = UserProxy.Instance.player.baseInfo.gold;
  112. txt_Gold.text = UserProxy.Instance.player.baseInfo.gold.ToString();
  113. goldEffect.SetActive(false);
  114. goldEffect.SetActive(true);
  115. }
  116. //// 资源点
  117. //if (lastRes != UserProxy.Instance.player.baseInfo.resPoint)
  118. //{
  119. // lastRes = UserProxy.Instance.player.baseInfo.resPoint;
  120. // txt_Res.text = UserProxy.Instance.player.baseInfo.resPoint.ToString();
  121. // resEffect.SetActive(false);
  122. // resEffect.SetActive(true);
  123. //}
  124. }
  125. }
  126. /// <summary>
  127. /// 显示获得新卡特效
  128. /// </summary>
  129. public void ShowNewCardEffect()
  130. {
  131. effectTuoWei.SetActive(true);
  132. float varH = UnityEngine.Random.Range(-500, 500);
  133. DOTween.To(setter: value =>
  134. {
  135. Debug.Log(value);
  136. effectTuoWei.transform.localPosition = Parabola(new Vector3(-910, -550, 0), Vector3.zero, varH, value);
  137. }, startValue: 0, endValue: 1, duration: 0.5f)
  138. .SetEase(Ease.Linear);
  139. Invoke("LateShowTiShi", 0.5f);
  140. }
  141. /// <summary>
  142. /// 延时显示提示
  143. /// </summary>
  144. private void LateShowTiShi()
  145. {
  146. effectTuoWei.SetActive(false);
  147. effectTuoWei.transform.localPosition = new Vector3(-910, -550, 0);
  148. effectTiShi.gameObject.SetActive(false);
  149. effectTiShi.gameObject.SetActive(true);
  150. }
  151. /// <summary>
  152. /// 增加钻石 点击
  153. /// </summary>
  154. /// <param name="go"> 按钮对象 </param>
  155. private void GemAdd_Click(GameObject go)
  156. {
  157. LogHelper.Log("点击增加钻石");
  158. }
  159. /// <summary>
  160. /// 增加金币 点击
  161. /// </summary>
  162. /// <param name="go"> 按钮对象 </param>
  163. private void GoldAdd_Click(GameObject go)
  164. {
  165. LogHelper.Log("点击增加金币");
  166. }
  167. /// <summary>
  168. /// 增加资源点 点击
  169. /// </summary>
  170. /// <param name="go"> 按钮对象 </param>
  171. private void ResAdd_Click(GameObject go)
  172. {
  173. LogHelper.Log("点击增加资源点");
  174. }
  175. public static Vector3 Parabola(Vector3 start, Vector3 end, float height, float t)
  176. {
  177. float Func(float x) => 4 * (-height * x * x + height * x);
  178. var mid = Vector3.Lerp(start, end, t);
  179. return new Vector3(mid.x, Func(t) + Mathf.Lerp(start.y, end.y, t), mid.z);
  180. }
  181. public static Vector2 Parabola(Vector2 start, Vector2 end, float height, float t)
  182. {
  183. float Func(float x) => 4 * (-height * x * x + height * x);
  184. var mid = Vector2.Lerp(start, end, t);
  185. return new Vector2(mid.x, Func(t) + Mathf.Lerp(start.y, end.y, t));
  186. }
  187. }