MyParticleEffectUI.cs 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. using System.Collections.Generic;
  2. using UnityEditor;
  3. using UnityEngine;
  4. #if UNITY_EDITOR
  5. /// <summary>
  6. /// 将特效的性能数据显示到Scene
  7. /// </summary>
  8. [CustomEditor(typeof(ParticleEffectScript))]
  9. public class MyParticleEffectUI : Editor {
  10. string[] m_Label = new string[20];
  11. void OnSceneGUI()
  12. {
  13. ParticleEffectScript particleEffectScript = (ParticleEffectScript)target;
  14. int index = 0;
  15. m_Label[index] = GetParticleEffectData.GetGetRuntimeMemorySizeStr(particleEffectScript.gameObject);
  16. m_Label[++index] = GetParticleEffectData.GetParticleSystemCount(particleEffectScript.gameObject);
  17. if (EditorApplication.isPlaying)
  18. {
  19. m_Label[++index] = GetParticleEffectData.GetOnlyParticleEffecDrawCallStr();
  20. m_Label[++index] = GetParticleEffectData.GetParticleCountStr(particleEffectScript);
  21. m_Label[++index] = GetParticleEffectData.GetPixDrawAverageStr(particleEffectScript);
  22. m_Label[++index] = GetParticleEffectData.GetPixActualDrawAverageStr(particleEffectScript);
  23. m_Label[++index] = GetParticleEffectData.GetPixRateStr(particleEffectScript);
  24. }
  25. ShowUI();
  26. }
  27. void ShowUI()
  28. {
  29. //开始绘制GUI
  30. Handles.BeginGUI();
  31. //规定GUI显示区域
  32. GUILayout.BeginArea(new Rect(10, 10, 300, 300));
  33. GUIStyle style = new GUIStyle();
  34. style.richText = true;
  35. style.fontStyle = FontStyle.Bold;
  36. for (int i = 0; i < m_Label.Length; i++)
  37. {
  38. if (!string.IsNullOrEmpty(m_Label[i]))
  39. {
  40. GUILayout.Label(m_Label[i], style);
  41. }
  42. }
  43. GUILayout.EndArea();
  44. Handles.EndGUI();
  45. }
  46. public override void OnInspectorGUI()
  47. {
  48. base.OnInspectorGUI();
  49. ParticleEffectScript particleEffectScript = (ParticleEffectScript)target;
  50. string autoCullingTips = GetParticleEffectData.GetCullingSupportedString(particleEffectScript.gameObject);
  51. if (!string.IsNullOrEmpty(autoCullingTips))
  52. {
  53. GUILayout.Label("ParticleSystem以下选项会导致无法自动剔除:", EditorStyles.whiteLargeLabel);
  54. GUILayout.Label(autoCullingTips);
  55. }
  56. }
  57. }
  58. #endif