UiStyle_inspector.cs 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5. using UnityEditor;
  6. namespace SoftKitty.InventoryEngine
  7. {
  8. [CustomEditor(typeof(UiStyle))]
  9. public class UiStyle_inspector : Editor
  10. {
  11. bool _colorExpand = false;
  12. bool _rectExpand = false;
  13. Color _activeColor = new Color(0.1F, 0.3F, 0.5F);
  14. Color _disableColor = new Color(0F, 0.1F, 0.3F);
  15. Color _titleColor = new Color(0.5F, 0.7F, 1F);
  16. Color _buttonColor = new Color(0F, 0.8F, 0.3F);
  17. GUIStyle _titleButtonStyle;
  18. public override void OnInspectorGUI()
  19. {
  20. GUI.changed = false;
  21. bool _valueChanged = false;
  22. _titleButtonStyle = new GUIStyle(GUI.skin.button);
  23. _titleButtonStyle.alignment = TextAnchor.MiddleLeft;
  24. Color _backgroundColor = GUI.backgroundColor;
  25. var script = MonoScript.FromScriptableObject(this);
  26. UiStyle myTarget = (UiStyle)target;
  27. string _thePath = AssetDatabase.GetAssetPath(script);
  28. _thePath = _thePath.Replace("UiStyle_inspector.cs", "");
  29. Texture logoIcon = (Texture)AssetDatabase.LoadAssetAtPath(_thePath + "Logo.png", typeof(Texture));
  30. Texture warningIcon = (Texture)AssetDatabase.LoadAssetAtPath(_thePath + "warning.png", typeof(Texture));
  31. GUILayout.BeginHorizontal();
  32. GUILayout.Box(logoIcon);
  33. GUILayout.EndHorizontal();
  34. GUILayout.BeginHorizontal();
  35. GUI.color = _titleColor;
  36. GUILayout.Label("Apply Style Settings", GUILayout.Width(120));
  37. GUI.color = Color.white;
  38. myTarget.ApplyStyle = GUILayout.Toggle(myTarget.ApplyStyle,"", GUILayout.Width(30));
  39. GUILayout.EndHorizontal();
  40. if (myTarget.ApplyStyle )
  41. {
  42. GUILayout.BeginHorizontal();
  43. GUI.backgroundColor = _colorExpand ? _activeColor : _disableColor;
  44. _titleButtonStyle.normal.textColor = _colorExpand ? Color.white : new Color(0.65F, 0.65F, 0.65F);
  45. GUILayout.Label(_colorExpand ? "[-]" : "[+]", GUILayout.Width(20));
  46. if (GUILayout.Button(" Color Setting (" + myTarget.References.Length.ToString() + ")", _titleButtonStyle))
  47. {
  48. _colorExpand = !_colorExpand;
  49. EditorGUI.FocusTextInControl(null);
  50. }
  51. GUI.backgroundColor = _backgroundColor;
  52. GUILayout.EndHorizontal();
  53. if (_colorExpand)
  54. {
  55. GUILayout.BeginHorizontal();
  56. GUILayout.Space(30);
  57. GUI.backgroundColor = _buttonColor;
  58. if (GUILayout.Button("Reset Default", GUILayout.Width(200)))
  59. {
  60. for (int i = 0; i < myTarget.References.Length; i++)
  61. {
  62. myTarget.SetColor(i, myTarget.References[i].defaultColor);
  63. if (myTarget.References[i].visibleAdjustable) myTarget.SetVisible(i, true);
  64. }
  65. _valueChanged = true;
  66. }
  67. GUI.backgroundColor = _backgroundColor;
  68. GUILayout.EndHorizontal();
  69. for (int i = 0; i < myTarget.References.Length; i++)
  70. {
  71. GUILayout.BeginHorizontal();
  72. GUILayout.Space(30);
  73. Color _color = EditorGUILayout.ColorField(myTarget.References[i].color, GUILayout.Width(50));
  74. if (_color != myTarget.References[i].color)
  75. {
  76. myTarget.SetColor(i, _color);
  77. _valueChanged = true;
  78. }
  79. GUI.color = _titleColor;
  80. GUILayout.Label(myTarget.References[i].name, GUILayout.Width(200));
  81. GUI.color = Color.white;
  82. if (myTarget.References[i].visibleAdjustable)
  83. {
  84. bool _visible = GUILayout.Toggle(myTarget.References[i].visible, "Visible", GUILayout.Width(100));
  85. if (_visible != myTarget.References[i].visible)
  86. {
  87. myTarget.SetVisible(i, _visible);
  88. _valueChanged = true;
  89. }
  90. }
  91. GUILayout.EndHorizontal();
  92. }
  93. }
  94. GUILayout.BeginHorizontal();
  95. GUI.backgroundColor = _rectExpand ? _activeColor : _disableColor;
  96. _titleButtonStyle.normal.textColor = _rectExpand ? Color.white : new Color(0.65F, 0.65F, 0.65F);
  97. GUILayout.Label(_rectExpand ? "[-]" : "[+]", GUILayout.Width(20));
  98. if (GUILayout.Button(" Size Setting (" + myTarget.Rects.Length.ToString() + ")", _titleButtonStyle))
  99. {
  100. _rectExpand = !_rectExpand;
  101. EditorGUI.FocusTextInControl(null);
  102. }
  103. GUI.backgroundColor = _backgroundColor;
  104. GUILayout.EndHorizontal();
  105. if (_rectExpand)
  106. {
  107. GUILayout.BeginHorizontal();
  108. GUILayout.Space(30);
  109. GUI.backgroundColor = _buttonColor;
  110. if (GUILayout.Button("Reset Default", GUILayout.Width(200)))
  111. {
  112. for (int i = 0; i < myTarget.Rects.Length; i++)
  113. {
  114. myTarget.SetWidth(i, 0.5F);
  115. myTarget.SetHeight(i, 0.5F);
  116. }
  117. _valueChanged = true;
  118. }
  119. GUI.backgroundColor = _backgroundColor;
  120. GUILayout.EndHorizontal();
  121. for (int i = 0; i < myTarget.Rects.Length; i++)
  122. {
  123. GUILayout.BeginHorizontal();
  124. GUILayout.Space(30);
  125. GUI.color = _titleColor;
  126. GUILayout.Label(myTarget.Rects[i].name, GUILayout.Width(200));
  127. GUI.color = Color.white;
  128. GUILayout.EndHorizontal();
  129. if (myTarget.Rects[i].widthAdjustable)
  130. {
  131. GUILayout.BeginHorizontal();
  132. GUILayout.Space(50);
  133. GUILayout.Label("Width: ", GUILayout.Width(70));
  134. float _width = GUILayout.HorizontalSlider(myTarget.Rects[i].widthLerp, 0F, 1F, GUILayout.Width(250));
  135. if (_width != myTarget.Rects[i].widthLerp)
  136. {
  137. myTarget.SetWidth(i, _width);
  138. _valueChanged = true;
  139. }
  140. GUILayout.Label(Mathf.FloorToInt((_width + 0.5F) * 100F).ToString() + "%", GUILayout.Width(50));
  141. GUILayout.EndHorizontal();
  142. }
  143. if (myTarget.Rects[i].heightAdjustable)
  144. {
  145. GUILayout.BeginHorizontal();
  146. GUILayout.Space(50);
  147. GUILayout.Label("Height: ", GUILayout.Width(70));
  148. float _height = GUILayout.HorizontalSlider(myTarget.Rects[i].heightLerp, 0F, 1F, GUILayout.Width(250));
  149. if (_height != myTarget.Rects[i].heightLerp)
  150. {
  151. myTarget.SetHeight(i, _height);
  152. _valueChanged = true;
  153. }
  154. GUILayout.Label(Mathf.FloorToInt((_height + 0.5F) * 100F).ToString() + "%", GUILayout.Width(50));
  155. GUILayout.EndHorizontal();
  156. }
  157. }
  158. }
  159. }
  160. GUILayout.BeginHorizontal();
  161. EditorGUILayout.HelpBox("Please don't modify the following settings unless you know what they do.", MessageType.Info);
  162. GUILayout.EndHorizontal();
  163. base.OnInspectorGUI();
  164. if ((_valueChanged || GUI.changed) && !Application.isPlaying) myTarget.UpdatePrefab();
  165. }
  166. }
  167. }