menuTab.cs 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5. using System;
  6. using System.Timers;
  7. public class MenuTab : MonoBehaviour
  8. {
  9. public GameObject[] 面板;
  10. public Toggle[] 开关组;
  11. // Start is called before the first frame update
  12. public Text 饱腹度;
  13. public Text 快乐;
  14. public Text 体力;
  15. public Text 口渴;
  16. public Text 健康;
  17. public Text 干净;
  18. public Image 饱腹度背景;
  19. public Image 快乐背景;
  20. public Image 体力背景;
  21. public Image 口渴背景;
  22. public Image 健康背景;
  23. public Image 干净背景;
  24. public int num = 50;
  25. private CanvasGroup canvasGroup1;
  26. private CanvasGroup canvasGroup2;
  27. private CanvasGroup canvasGroup3;
  28. private CanvasGroup canvasGroup4;
  29. private CanvasGroup canvasGroup5;
  30. private CanvasGroup canvasGroup6;
  31. public Button 场景;
  32. public Button 物品;
  33. public Button 玩具;
  34. public Button 商店;
  35. public Button 状态;
  36. public Button 设置;
  37. void Start()
  38. {
  39. gameTime();
  40. canvasGroup1 = 场景.GetComponent<CanvasGroup>();
  41. if (canvasGroup1 == null)
  42. {
  43. canvasGroup1 = 场景.gameObject.AddComponent<CanvasGroup>();
  44. }
  45. canvasGroup2 = 物品.GetComponent<CanvasGroup>();
  46. if (canvasGroup2 == null)
  47. {
  48. canvasGroup2 = 物品.gameObject.AddComponent<CanvasGroup>();
  49. }
  50. canvasGroup3 = 玩具.GetComponent<CanvasGroup>();
  51. if (canvasGroup3 == null)
  52. {
  53. canvasGroup3 = 玩具.gameObject.AddComponent<CanvasGroup>();
  54. }
  55. canvasGroup4 = 商店.GetComponent<CanvasGroup>();
  56. if (canvasGroup4 == null)
  57. {
  58. canvasGroup4 = 商店.gameObject.AddComponent<CanvasGroup>();
  59. }
  60. canvasGroup5 = 状态.GetComponent<CanvasGroup>();
  61. if (canvasGroup5 == null)
  62. {
  63. canvasGroup5 = 状态.gameObject.AddComponent<CanvasGroup>();
  64. }
  65. canvasGroup6 = 设置.GetComponent<CanvasGroup>();
  66. if (canvasGroup6 == null)
  67. {
  68. canvasGroup6 = 设置.gameObject.AddComponent<CanvasGroup>();
  69. }
  70. FadeOut(canvasGroup1,1);
  71. FadeOut(canvasGroup2, 1);
  72. FadeOut(canvasGroup3, 1);
  73. FadeOut(canvasGroup4, 1);
  74. FadeOut(canvasGroup5, 1);
  75. FadeOut(canvasGroup6, 1);
  76. }
  77. public void menuBtnClick()
  78. {
  79. FadeIn(canvasGroup1, 0.1f);
  80. FadeIn(canvasGroup2, 0.1f);
  81. FadeIn(canvasGroup3, 0.1f);
  82. FadeIn(canvasGroup4, 0.1f);
  83. FadeIn(canvasGroup5, 0.1f);
  84. FadeIn(canvasGroup6, 0.1f);
  85. }
  86. public void menuFadeOut()
  87. {
  88. FadeOut(canvasGroup1, 0.1f);
  89. FadeOut(canvasGroup2, 0.1f);
  90. FadeOut(canvasGroup3, 0.1f);
  91. FadeOut(canvasGroup4, 0.1f);
  92. FadeOut(canvasGroup5, 0.1f);
  93. FadeOut(canvasGroup6, 0.1f);
  94. }
  95. void gameTime()
  96. {
  97. // 创建一个 Timer 对象
  98. var timer = new Timer();
  99. // 设置触发事件的间隔(单位为毫秒)
  100. timer.Interval = 1000 * 60; // 这里表示每分钟执行一次
  101. // 添加 Elapsed 事件处理程序
  102. timer.Elapsed += (sender, e) =>
  103. {
  104. num--;
  105. Debug.Log(num);
  106. //饱腹度.text = num.ToString();
  107. 快乐.text = num.ToString();
  108. //肥胖.text = num.ToString();
  109. //口渴.text = num.ToString();
  110. //饱腹度背景.gameObject.GetComponent<RectTransform>().sizeDelta = new Vector2(num, 100f);
  111. 快乐背景.gameObject.GetComponent<RectTransform>().sizeDelta = new Vector2(num, 100f);
  112. //情绪背景.rectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, num);
  113. // 在此处编写需要定期执行的任务代码
  114. };
  115. // 开始计时器
  116. timer.Start();
  117. // 保持控制台应用程序运行
  118. Console.ReadLine();
  119. }
  120. public void plane_场景()
  121. {
  122. for (int i = 0; i < 面板.Length; i++)
  123. {
  124. 面板[i].SetActive(false);
  125. }
  126. 面板[0].SetActive(true);
  127. }
  128. public void plane_物品()
  129. {
  130. for (int i = 0; i < 面板.Length; i++)
  131. {
  132. 面板[i].SetActive(false);
  133. }
  134. 面板[1].SetActive(true);
  135. }
  136. public void plane_玩具()
  137. {
  138. for (int i = 0; i < 面板.Length; i++)
  139. {
  140. 面板[i].SetActive(false);
  141. }
  142. 面板[2].SetActive(true);
  143. }
  144. public void plane_商店()
  145. {
  146. for (int i = 0; i < 面板.Length; i++)
  147. {
  148. 面板[i].SetActive(false);
  149. }
  150. 面板[3].SetActive(true);
  151. }
  152. public void plane_状态()
  153. {
  154. for (int i = 0; i < 面板.Length; i++)
  155. {
  156. 面板[i].SetActive(false);
  157. }
  158. 面板[4].SetActive(true);
  159. }
  160. public void plane_设置()
  161. {
  162. for (int i = 0; i < 面板.Length; i++)
  163. {
  164. 面板[i].SetActive(false);
  165. }
  166. 面板[5].SetActive(true);
  167. }
  168. // Update is called once per frame
  169. void Update()
  170. {
  171. }
  172. public void FadeIn(CanvasGroup canvasGroup, float duration)
  173. {
  174. canvasGroup.alpha = 0;
  175. canvasGroup.blocksRaycasts = false;
  176. canvasGroup.interactable = false;
  177. StartCoroutine(FadeInCoroutine(canvasGroup, 1, duration));
  178. }
  179. public void FadeOut(CanvasGroup canvasGroup, float duration)
  180. {
  181. StartCoroutine(FadeOutCoroutine(canvasGroup, 0,duration));
  182. }
  183. private IEnumerator FadeInCoroutine(CanvasGroup canvasGroup, float targetAlpha, float duration)
  184. {
  185. float elapsedTime = 0;
  186. while (elapsedTime < duration)
  187. {
  188. elapsedTime += Time.deltaTime;
  189. //canvasGroup.alpha = Mathf.Lerp(0, targetAlpha, elapsedTime / duration);
  190. if(elapsedTime + Time.deltaTime >= duration)
  191. {
  192. canvasGroup.alpha = 1;
  193. }
  194. yield return null;
  195. }
  196. canvasGroup.alpha = targetAlpha;
  197. canvasGroup.blocksRaycasts = true;
  198. canvasGroup.interactable = true;
  199. }
  200. private IEnumerator FadeOutCoroutine(CanvasGroup canvasGroup, float targetAlpha, float duration)
  201. {
  202. float elapsedTime = 0;
  203. while (elapsedTime < duration)
  204. {
  205. elapsedTime += Time.deltaTime;
  206. //canvasGroup.alpha = Mathf.Lerp(1, targetAlpha, elapsedTime / duration);
  207. if (elapsedTime + Time.deltaTime >= duration)
  208. {
  209. canvasGroup.alpha = 0;
  210. }
  211. yield return null;
  212. }
  213. canvasGroup.alpha = targetAlpha;
  214. canvasGroup.blocksRaycasts = false;
  215. canvasGroup.interactable = false;
  216. }
  217. }