LuaProfilerWindow.cs 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. /*
  2. * ==============================================================================
  3. * Filename: LuaProfilerWindow
  4. * Created: 2018/7/13 14:29:22
  5. * Author: エル・プサイ・コングリィ
  6. * Purpose:
  7. * ==============================================================================
  8. */
  9. using UnityEngine;
  10. using UnityEditor;
  11. namespace MikuLuaProfiler
  12. {
  13. public class LuaProfilerWindowProfiler : EditorWindow
  14. {
  15. #if (UNITY_5 || UNITY_2017_1_OR_NEWER)
  16. private static LuaDiffScrollView m_luaDiffScrollView = null;
  17. void OnEnable()
  18. {
  19. if (m_luaDiffScrollView == null)
  20. {
  21. m_luaDiffScrollView = new LuaDiffScrollView();
  22. }
  23. }
  24. #endif
  25. void OnGUI()
  26. {
  27. EditorGUILayout.BeginVertical();
  28. DoToolbar();
  29. EditorGUILayout.EndVertical();
  30. }
  31. void DoToolbar()
  32. {
  33. var setting = LuaDeepProfilerSetting.Instance;
  34. #region profiler settting
  35. GUILayout.Label("profiler setting");
  36. GUILayout.BeginVertical("Box");
  37. EditorGUILayout.BeginHorizontal();
  38. bool flag = GUILayout.Toggle(setting.isDeepLuaProfiler, "Deep Profiler Lua");
  39. if (flag != setting.isDeepLuaProfiler)
  40. {
  41. setting.isDeepLuaProfiler = flag;
  42. if (!flag)
  43. {
  44. setting.isCleanMode = false;
  45. }
  46. EditorApplication.isPlaying = false;
  47. }
  48. flag = GUILayout.Toggle(setting.isDeepMonoProfiler, "Deep Profiler Mono");
  49. if (flag != setting.isDeepMonoProfiler)
  50. {
  51. setting.isDeepMonoProfiler = flag;
  52. EditorApplication.isPlaying = false;
  53. InjectMethods.Recompile();
  54. }
  55. flag = GUILayout.Toggle(setting.discardInvalid, "Discard Invalid");
  56. if (flag != setting.discardInvalid)
  57. {
  58. setting.discardInvalid = flag;
  59. }
  60. flag = GUILayout.Toggle(setting.isCleanMode, "PreCompile Lua(Use InjectLua.exe)");
  61. if (flag != setting.isCleanMode)
  62. {
  63. setting.isCleanMode = flag;
  64. if (setting.isCleanMode)
  65. {
  66. setting.isDeepLuaProfiler = true;
  67. }
  68. EditorApplication.isPlaying = false;
  69. }
  70. EditorGUILayout.EndHorizontal();
  71. GUILayout.Space(5);
  72. if (GUILayout.Button("ReCompile", GUILayout.Height(50)))
  73. {
  74. InjectMethods.Recompile();
  75. }
  76. GUILayout.Space(5);
  77. GUILayout.EndVertical();
  78. #endregion
  79. #region socket
  80. GUILayout.Space(10);
  81. GUILayout.Label("connet");
  82. GUILayout.BeginVertical("Box");
  83. GUILayout.Space(5);
  84. EditorGUILayout.BeginHorizontal();
  85. GUILayout.Label("ip:", GUILayout.Height(30), GUILayout.Width(35));
  86. setting.ip = EditorGUILayout.TextField(setting.ip, GUILayout.Height(16), GUILayout.Width(100));
  87. GUILayout.Label("port:", GUILayout.Height(30), GUILayout.Width(35));
  88. setting.port = EditorGUILayout.IntField(setting.port, GUILayout.Height(16), GUILayout.Width(50));
  89. EditorGUILayout.EndHorizontal();
  90. /*
  91. if (GUILayout.Button("Connent", GUILayout.Height(50)))
  92. {
  93. NetWorkClient.ConnectServer(setting.ip, setting.port);
  94. }
  95. GUILayout.Space(5);*/
  96. GUILayout.EndVertical();
  97. #endregion
  98. #region diff
  99. GUILayout.BeginVertical("Box");
  100. GUILayout.Space(5);
  101. GUILayout.BeginHorizontal();
  102. #if (UNITY_5 || UNITY_2017_1_OR_NEWER)
  103. if (GUILayout.Button("MarkStaticRecord", GUILayout.Height(30)))
  104. {
  105. m_luaDiffScrollView.DelDiffInfo(LuaHook.RecordStatic());
  106. m_luaDiffScrollView.MarkIsStaticRecord();
  107. }
  108. if (GUILayout.Button("MarkLuaRecord", GUILayout.Height(30)))
  109. {
  110. m_luaDiffScrollView.DelDiffInfo(LuaHook.Record());
  111. m_luaDiffScrollView.MarkIsRecord();
  112. }
  113. if (GUILayout.Button("DiffRecord", GUILayout.Height(30)))
  114. {
  115. m_luaDiffScrollView.DelDiffInfo(LuaHook.Diff());
  116. }
  117. if (GUILayout.Button("ClearDiff", GUILayout.Height(30)))
  118. {
  119. m_luaDiffScrollView.Clear();
  120. }
  121. GUILayout.EndHorizontal();
  122. m_luaDiffScrollView.DoRefScroll();
  123. #endif
  124. GUILayout.EndVertical();
  125. #endregion
  126. #region capture
  127. /*
  128. GUILayout.Space(10);
  129. GUILayout.Label("capture setting");
  130. GUILayout.BeginVertical("Box");
  131. flag = GUILayout.Toggle(LuaDeepProfilerSetting.Instance.isNeedCapture, "NeedCapture");
  132. if (flag != LuaDeepProfilerSetting.Instance.isNeedCapture)
  133. {
  134. LuaDeepProfilerSetting.Instance.isNeedCapture = flag;
  135. if (flag)
  136. {
  137. GameViewUtility.ChangeGameViewSize(480, 270);
  138. }
  139. }
  140. GUILayout.Space(10);
  141. EditorGUILayout.BeginHorizontal();
  142. GUILayout.Label("lua gc", GUILayout.Height(30), GUILayout.Width(45));
  143. LuaDeepProfilerSetting.Instance.captureLuaGC
  144. = EditorGUILayout.IntField(LuaDeepProfilerSetting.Instance.captureLuaGC, GUILayout.Height(16), GUILayout.Width(50));
  145. LuaDeepProfilerSetting.Instance.captureLuaGC = Mathf.Max(0, LuaDeepProfilerSetting.Instance.captureLuaGC);
  146. GUILayout.Label("B", GUILayout.Height(30), GUILayout.Width(20));
  147. GUILayout.Label("mono gc", GUILayout.Height(30), GUILayout.Width(55));
  148. LuaDeepProfilerSetting.Instance.captureMonoGC
  149. = EditorGUILayout.IntField(LuaDeepProfilerSetting.Instance.captureMonoGC, GUILayout.Height(16), GUILayout.Width(50));
  150. LuaDeepProfilerSetting.Instance.captureMonoGC = Mathf.Max(0, LuaDeepProfilerSetting.Instance.captureMonoGC);
  151. GUILayout.Label("B", GUILayout.Height(30), GUILayout.Width(20));
  152. GUILayout.Label("capture ", GUILayout.Height(30), GUILayout.Width(50));
  153. LuaDeepProfilerSetting.Instance.captureFrameRate
  154. = EditorGUILayout.IntField(LuaDeepProfilerSetting.Instance.captureFrameRate, GUILayout.Height(16), GUILayout.Width(50));
  155. LuaDeepProfilerSetting.Instance.captureFrameRate = Mathf.Max(0, LuaDeepProfilerSetting.Instance.captureFrameRate);
  156. GUILayout.Label("FPS", GUILayout.Height(30), GUILayout.Width(30));
  157. EditorGUILayout.EndHorizontal();
  158. GUILayout.EndVertical();
  159. */
  160. #endregion
  161. }
  162. // Add menu named "My Window" to the Window menu
  163. [MenuItem("Window/Lua Profiler Window")]
  164. static public void ShowWindow()
  165. {
  166. //InjectMethods.ChangeAttribute();
  167. // Get existing open window or if none, make a new one:
  168. var window = GetWindow<LuaProfilerWindowProfiler>();
  169. window.titleContent = new GUIContent("Lua Profiler");
  170. window.Show();
  171. }
  172. }
  173. }