Unity 框架

DebugPanel.cs 2.7KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using TFramework;
  4. using UnityEngine;
  5. using UnityEngine.UI;
  6. public class DebugPanelData : PanelData
  7. {
  8. }
  9. /*
  10. UI面板预制体路径
  11. UI面板AB包路径(热更使用)
  12. UI面板完整路径(热更编辑器调试使用)
  13. 加载方式(对应前面路径)
  14. UI作用域(决定该UI面板挂载在那个Canvas下)
  15. */
  16. [UIResource("UI/DebugPanel",UIManager.DEFAULTDOMAIN)]
  17. public partial class DebugPanel :BasePanel
  18. {
  19. public override bool StickyTopic => true;
  20. FPS fPS = new FPS();
  21. private List<BaseComponent> m_componentsList = new List<BaseComponent>();
  22. public void Init()
  23. {
  24. fPS.onUpdateFPS = (f) => FPS_Text.text = $"<color={(f<60?"red": "#00FF1A")}>{f.ToString("F2")}</color>";
  25. CloseBtn_Button.onClick.AddListener(() =>
  26. {
  27. Max_RectTransform.SetActive(false);
  28. Min_DragIcon.SetActive(true);
  29. });
  30. Min_DragIcon.onClick = () =>
  31. {
  32. Max_RectTransform.SetActive(true);
  33. Min_DragIcon.SetActive(false);
  34. };
  35. for (int i = 0; i < Content_DebugComponent.Components.Length; i++)
  36. {
  37. m_componentsList.Add(Content_DebugComponent.Components[i].m_prefab.Clone(Content_DebugComponent.transform));
  38. m_componentsList[i].Init();
  39. }
  40. for (int i = 0; i < Content_DebugComponent.Components.Length; i++)
  41. {
  42. if (ItmeBar_Toggle.transform.parent.childCount <= i)
  43. {
  44. ItmeBar_Toggle.Clone(ItmeBar_Toggle.transform.parent,true);
  45. }
  46. ItmeBar_Toggle.transform.parent.GetChild(i).GetChildComponent<Text>("Label").text = Content_DebugComponent.Components[i].m_name;
  47. int index = i;
  48. ItmeBar_Toggle.transform.parent.GetChild(i).GetComponent<Toggle>().onValueChanged.AddListener(isOn =>
  49. {
  50. if (isOn)
  51. {
  52. ChangeView(index);
  53. }
  54. });
  55. ItmeBar_Toggle.transform.parent.GetChild(i).SetActive(true);
  56. }
  57. }
  58. public void ChangeView(int index)
  59. {
  60. m_componentsList.ForEach(c => c.SetActive(false));
  61. m_componentsList[index].SetActive(true);
  62. }
  63. public override void OnEnter(IPanelData args = null)
  64. {
  65. base.OnEnter(args);
  66. }
  67. public override void OnExit(IPanelData args = null, bool isDestroy = false)
  68. {
  69. if(isDestroy)
  70. {
  71. for (int i = 0; i < m_componentsList.Count;)
  72. {
  73. GameObject.Destroy(m_componentsList[i]);
  74. m_componentsList.Remove(m_componentsList[i]);
  75. }
  76. }
  77. base.OnExit(args);
  78. }
  79. }