DebuggerComponent.GeneralSettingsWindow.cs 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. //------------------------------------------------------------
  2. // Game Framework v3.x
  3. // Copyright © 2013-2017 Jiang Yin. All rights reserved.
  4. // Homepage: http://gameframework.cn/
  5. // Feedback: mailto:jiangyin@gameframework.cn
  6. //------------------------------------------------------------
  7. using UnityEngine;
  8. namespace UnityGameFramework.Runtime
  9. {
  10. public partial class DebuggerComponent
  11. {
  12. private sealed class GeneralSettingsWindow : ScrollableDebuggerWindowBase
  13. {
  14. private DebuggerComponent m_DebuggerComponent = null;
  15. private float m_LastIconX = 0f;
  16. private float m_LastIconY = 0f;
  17. private float m_LastWindowX = 0f;
  18. private float m_LastWindowY = 0f;
  19. private float m_LastWindowWidth = 0f;
  20. private float m_LastWindowHeight = 0f;
  21. private float m_LastWindowScale = 0f;
  22. public override void Initialize(params object[] args)
  23. {
  24. if (args.Length < 1)
  25. {
  26. throw new System.ArgumentException("Debugger component is invalid.");
  27. }
  28. m_DebuggerComponent = args[0] as DebuggerComponent;
  29. if (m_DebuggerComponent == null)
  30. {
  31. throw new System.ArgumentException("Debugger component is invalid.");
  32. }
  33. m_LastIconX = PlayerPrefs.GetFloat("Debugger.Icon.X", DefaultIconRect.x);
  34. m_LastIconY = PlayerPrefs.GetFloat("Debugger.Icon.Y", DefaultIconRect.y);
  35. m_LastWindowX = PlayerPrefs.GetFloat("Debugger.Window.X", DefaultWindowRect.x);
  36. m_LastWindowY = PlayerPrefs.GetFloat("Debugger.Window.Y", DefaultWindowRect.y);
  37. m_LastWindowWidth = PlayerPrefs.GetFloat("Debugger.Window.Width", DefaultWindowRect.width);
  38. m_LastWindowHeight = PlayerPrefs.GetFloat("Debugger.Window.Height", DefaultWindowRect.height);
  39. m_DebuggerComponent.WindowScale = m_LastWindowScale = PlayerPrefs.GetFloat("Debugger.Window.Scale", DefaultWindowScale);
  40. m_DebuggerComponent.IconRect = new Rect(m_LastIconX, m_LastIconY, DefaultIconRect.width, DefaultIconRect.height);
  41. m_DebuggerComponent.WindowRect = new Rect(m_LastWindowX, m_LastWindowY, m_LastWindowWidth, m_LastWindowHeight);
  42. }
  43. public override void OnUpdate(float elapseSeconds, float realElapseSeconds)
  44. {
  45. if (m_LastIconX != m_DebuggerComponent.IconRect.x)
  46. {
  47. m_LastIconX = m_DebuggerComponent.IconRect.x;
  48. PlayerPrefs.SetFloat("Debugger.Icon.X", m_DebuggerComponent.IconRect.x);
  49. }
  50. if (m_LastIconY != m_DebuggerComponent.IconRect.y)
  51. {
  52. m_LastIconY = m_DebuggerComponent.IconRect.y;
  53. PlayerPrefs.SetFloat("Debugger.Icon.Y", m_DebuggerComponent.IconRect.y);
  54. }
  55. if (m_LastWindowX != m_DebuggerComponent.WindowRect.x)
  56. {
  57. m_LastWindowX = m_DebuggerComponent.WindowRect.x;
  58. PlayerPrefs.SetFloat("Debugger.Window.X", m_DebuggerComponent.WindowRect.x);
  59. }
  60. if (m_LastWindowY != m_DebuggerComponent.WindowRect.y)
  61. {
  62. m_LastWindowY = m_DebuggerComponent.WindowRect.y;
  63. PlayerPrefs.SetFloat("Debugger.Window.Y", m_DebuggerComponent.WindowRect.y);
  64. }
  65. if (m_LastWindowWidth != m_DebuggerComponent.WindowRect.width)
  66. {
  67. m_LastWindowWidth = m_DebuggerComponent.WindowRect.width;
  68. PlayerPrefs.SetFloat("Debugger.Window.Width", m_DebuggerComponent.WindowRect.width);
  69. }
  70. if (m_LastWindowHeight != m_DebuggerComponent.WindowRect.height)
  71. {
  72. m_LastWindowHeight = m_DebuggerComponent.WindowRect.height;
  73. PlayerPrefs.SetFloat("Debugger.Window.Height", m_DebuggerComponent.WindowRect.height);
  74. }
  75. if (m_LastWindowScale != m_DebuggerComponent.WindowScale)
  76. {
  77. m_LastWindowScale = m_DebuggerComponent.WindowScale;
  78. PlayerPrefs.SetFloat("Debugger.Window.Scale", m_DebuggerComponent.WindowScale);
  79. }
  80. }
  81. protected override void OnDrawScrollableWindow()
  82. {
  83. GUILayout.Label("<b>Window Settings</b>");
  84. GUILayout.BeginVertical("box");
  85. {
  86. GUILayout.BeginHorizontal();
  87. {
  88. GUILayout.Label("Position:", GUILayout.Width(60f));
  89. GUILayout.Label("Drag window caption to move position.");
  90. }
  91. GUILayout.EndHorizontal();
  92. GUILayout.BeginHorizontal();
  93. {
  94. float width = m_DebuggerComponent.WindowRect.width;
  95. GUILayout.Label("Width:", GUILayout.Width(60f));
  96. if (GUILayout.RepeatButton("-", GUILayout.Width(30f)))
  97. {
  98. width--;
  99. }
  100. width = GUILayout.HorizontalSlider(width, 100f, Screen.width - 20f);
  101. if (GUILayout.RepeatButton("+", GUILayout.Width(30f)))
  102. {
  103. width++;
  104. }
  105. width = Mathf.Clamp(width, 100f, Screen.width - 20f);
  106. if (width != m_DebuggerComponent.WindowRect.width)
  107. {
  108. m_DebuggerComponent.WindowRect = new Rect(m_DebuggerComponent.WindowRect.x, m_DebuggerComponent.WindowRect.y, width, m_DebuggerComponent.WindowRect.height);
  109. }
  110. }
  111. GUILayout.EndHorizontal();
  112. GUILayout.BeginHorizontal();
  113. {
  114. float height = m_DebuggerComponent.WindowRect.height;
  115. GUILayout.Label("Height:", GUILayout.Width(60f));
  116. if (GUILayout.RepeatButton("-", GUILayout.Width(30f)))
  117. {
  118. height--;
  119. }
  120. height = GUILayout.HorizontalSlider(height, 100f, Screen.height - 20f);
  121. if (GUILayout.RepeatButton("+", GUILayout.Width(30f)))
  122. {
  123. height++;
  124. }
  125. height = Mathf.Clamp(height, 100f, Screen.height - 20f);
  126. if (height != m_DebuggerComponent.WindowRect.height)
  127. {
  128. m_DebuggerComponent.WindowRect = new Rect(m_DebuggerComponent.WindowRect.x, m_DebuggerComponent.WindowRect.y, m_DebuggerComponent.WindowRect.width, height);
  129. }
  130. }
  131. GUILayout.EndHorizontal();
  132. GUILayout.BeginHorizontal();
  133. {
  134. float scale = m_DebuggerComponent.WindowScale;
  135. GUILayout.Label("Scale:", GUILayout.Width(60f));
  136. if (GUILayout.RepeatButton("-", GUILayout.Width(30f)))
  137. {
  138. scale -= 0.01f;
  139. }
  140. scale = GUILayout.HorizontalSlider(scale, 0.5f, 4f);
  141. if (GUILayout.RepeatButton("+", GUILayout.Width(30f)))
  142. {
  143. scale += 0.01f;
  144. }
  145. scale = Mathf.Clamp(scale, 0.5f, 4f);
  146. if (scale != m_DebuggerComponent.WindowScale)
  147. {
  148. m_DebuggerComponent.WindowScale = scale;
  149. }
  150. }
  151. GUILayout.EndHorizontal();
  152. if (GUILayout.Button("Reset Window Settings", GUILayout.Height(30f)))
  153. {
  154. m_DebuggerComponent.IconRect = DefaultIconRect;
  155. m_DebuggerComponent.WindowRect = DefaultWindowRect;
  156. m_DebuggerComponent.WindowScale = DefaultWindowScale;
  157. }
  158. }
  159. GUILayout.EndVertical();
  160. }
  161. }
  162. }
  163. }