DrawInspectorBanner.cs 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. // Cristian Pop - https://boxophobic.com/
  2. using UnityEngine;
  3. using UnityEditor;
  4. using Boxophobic.Constants;
  5. namespace Boxophobic.StyledGUI
  6. {
  7. public partial class StyledGUI
  8. {
  9. public static void DrawInspectorBanner(Color bannerColor, string title, string helpURL)
  10. {
  11. GUILayout.Space(10);
  12. var bannerFullRect = GUILayoutUtility.GetRect(0, 0, 36, 0);
  13. var bannerBeginRect = new Rect(bannerFullRect.position.x, bannerFullRect.position.y, 20, 36);
  14. var bannerMiddleRect = new Rect(bannerFullRect.position.x + 20, bannerFullRect.position.y, bannerFullRect.xMax - 54, 36);
  15. var bannerEndRect = new Rect(bannerFullRect.xMax - 20, bannerFullRect.position.y, 20, 36);
  16. var iconRect = new Rect(bannerFullRect.xMax - 34, bannerFullRect.position.y + 5, 30, 26);
  17. Color guiColor;
  18. if (EditorGUIUtility.isProSkin)
  19. {
  20. bannerColor = new Color(bannerColor.r, bannerColor.g, bannerColor.b, 1f);
  21. }
  22. else
  23. {
  24. bannerColor = CONSTANT.ColorLightGray;
  25. }
  26. if (bannerColor.r + bannerColor.g + bannerColor.b <= 1.5f)
  27. {
  28. guiColor = CONSTANT.ColorLightGray;
  29. }
  30. else
  31. {
  32. guiColor = CONSTANT.ColorDarkGray;
  33. }
  34. GUI.color = bannerColor;
  35. GUI.DrawTexture(bannerBeginRect, CONSTANT.BannerImageBegin, ScaleMode.StretchToFill, true);
  36. GUI.DrawTexture(bannerMiddleRect, CONSTANT.BannerImageMiddle, ScaleMode.StretchToFill, true);
  37. GUI.DrawTexture(bannerEndRect, CONSTANT.BannerImageEnd, ScaleMode.StretchToFill, true);
  38. #if UNITY_2019_3_OR_NEWER
  39. GUI.Label(bannerFullRect, "<size=16><color=#" + ColorUtility.ToHtmlStringRGB(guiColor) + ">" + title + "</color></size>", CONSTANT.TitleStyle);
  40. #else
  41. GUI.Label(bannerFullRect, "<size=14><color=#" + ColorUtility.ToHtmlStringRGB(guiColor) + "><b>" + title + "</b></color></size>", CONSTANT.TitleStyle);
  42. #endif
  43. GUI.color = guiColor;
  44. if (GUI.Button(iconRect, CONSTANT.IconHelp, new GUIStyle { alignment = TextAnchor.MiddleCenter }))
  45. {
  46. Application.OpenURL(helpURL);
  47. }
  48. GUI.color = Color.white;
  49. GUILayout.Space(10);
  50. }
  51. public static void DrawInspectorBanner(string title)
  52. {
  53. GUILayout.Space(10);
  54. var bannerFullRect = GUILayoutUtility.GetRect(0, 0, 36, 0);
  55. var bannerBeginRect = new Rect(bannerFullRect.position.x, bannerFullRect.position.y, 20, 36);
  56. var bannerMiddleRect = new Rect(bannerFullRect.position.x + 20, bannerFullRect.position.y, bannerFullRect.xMax - 54, 36);
  57. var bannerEndRect = new Rect(bannerFullRect.xMax - 20, bannerFullRect.position.y, 20, 36);
  58. Color bannerColor;
  59. Color guiColor;
  60. if (EditorGUIUtility.isProSkin)
  61. {
  62. bannerColor = CONSTANT.ColorDarkGray;
  63. guiColor = CONSTANT.ColorLightGray;
  64. }
  65. else
  66. {
  67. bannerColor = CONSTANT.ColorLightGray;
  68. guiColor = CONSTANT.ColorDarkGray;
  69. }
  70. GUI.color = bannerColor;
  71. GUI.DrawTexture(bannerBeginRect, CONSTANT.BannerImageBegin, ScaleMode.StretchToFill, true);
  72. GUI.DrawTexture(bannerMiddleRect, CONSTANT.BannerImageMiddle, ScaleMode.StretchToFill, true);
  73. GUI.DrawTexture(bannerEndRect, CONSTANT.BannerImageEnd, ScaleMode.StretchToFill, true);
  74. #if UNITY_2019_3_OR_NEWER
  75. GUI.Label(bannerFullRect, "<size=16><color=#" + ColorUtility.ToHtmlStringRGB(guiColor) + ">" + title + "</color></size>", CONSTANT.TitleStyle);
  76. #else
  77. GUI.Label(bannerFullRect, "<size=14><color=#" + ColorUtility.ToHtmlStringRGB(guiColor) + "><b>" + title + "</b></color></size>", CONSTANT.TitleStyle);
  78. #endif
  79. GUI.color = Color.white;
  80. GUILayout.Space(10);
  81. }
  82. }
  83. }