UI_Sprite.cs 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. /*
  2. ------------------- Code Monkey -------------------
  3. Thank you for downloading the Code Monkey Utilities
  4. I hope you find them useful in your projects
  5. If you have any questions use the contact form
  6. Cheers!
  7. unitycodemonkey.com
  8. --------------------------------------------------
  9. */
  10. using System;
  11. using UnityEngine;
  12. using UnityEngine.UI;
  13. namespace CodeMonkey.Utils {
  14. /*
  15. * Sprite in the UI
  16. * */
  17. public class UI_Sprite {
  18. private static Transform GetCanvasTransform() {
  19. return UtilsClass.GetCanvasTransform();
  20. }
  21. public static UI_Sprite CreateDebugButton(Vector2 anchoredPosition, Vector2 size, Action ClickFunc) {
  22. return CreateDebugButton(anchoredPosition, size, ClickFunc, Color.green);
  23. }
  24. public static UI_Sprite CreateDebugButton(Vector2 anchoredPosition, Vector2 size, Action ClickFunc, Color color) {
  25. UI_Sprite uiSprite = new UI_Sprite(GetCanvasTransform(), Assets.i.s_White, anchoredPosition, size, color);
  26. uiSprite.AddButton(ClickFunc, null, null);
  27. return uiSprite;
  28. }
  29. public static UI_Sprite CreateDebugButton(Transform parent, Vector2 anchoredPosition, string text, Action ClickFunc) {
  30. return CreateDebugButton(parent, anchoredPosition, text, ClickFunc, Color.green);
  31. }
  32. public static UI_Sprite CreateDebugButton(Vector2 anchoredPosition, string text, Action ClickFunc) {
  33. return CreateDebugButton(anchoredPosition, text, ClickFunc, Color.green);
  34. }
  35. public static UI_Sprite CreateDebugButton(Transform parent, Vector2 anchoredPosition, string text, Action ClickFunc, Color color) {
  36. return CreateDebugButton(parent, anchoredPosition, text, ClickFunc, color, new Vector2(30, 20));
  37. }
  38. public static UI_Sprite CreateDebugButton(Vector2 anchoredPosition, string text, Action ClickFunc, Color color) {
  39. return CreateDebugButton(GetCanvasTransform(), anchoredPosition, text, ClickFunc, color, new Vector2(30, 20));
  40. }
  41. public static UI_Sprite CreateDebugButton(Transform parent, Vector2 anchoredPosition, string text, Action ClickFunc, Color color, Vector2 padding) {
  42. UI_TextComplex uiTextComplex;
  43. UI_Sprite uiSprite = CreateDebugButton(parent, anchoredPosition, Vector2.zero, ClickFunc, color, text, out uiTextComplex);
  44. uiSprite.SetSize(new Vector2(uiTextComplex.GetTotalWidth(), uiTextComplex.GetTotalHeight()) + padding);
  45. return uiSprite;
  46. }
  47. public static UI_Sprite CreateDebugButton(Vector2 anchoredPosition, Vector2 size, Action ClickFunc, Color color, string text) {
  48. UI_TextComplex uiTextComplex;
  49. return CreateDebugButton(anchoredPosition, size, ClickFunc, color, text, out uiTextComplex);
  50. }
  51. public static UI_Sprite CreateDebugButton(Vector2 anchoredPosition, Vector2 size, Action ClickFunc, Color color, string text, out UI_TextComplex uiTextComplex) {
  52. return CreateDebugButton(GetCanvasTransform(), anchoredPosition, size, ClickFunc, color, text, out uiTextComplex);
  53. }
  54. public static UI_Sprite CreateDebugButton(Transform parent, Vector2 anchoredPosition, Vector2 size, Action ClickFunc, Color color, string text, out UI_TextComplex uiTextComplex) {
  55. if (color.r >= 1f) color.r = .9f;
  56. if (color.g >= 1f) color.g = .9f;
  57. if (color.b >= 1f) color.b = .9f;
  58. Color colorOver = color * 1.1f; // button over color lighter
  59. UI_Sprite uiSprite = new UI_Sprite(parent, Assets.i.s_White, anchoredPosition, size, color);
  60. uiSprite.AddButton(ClickFunc, () => uiSprite.SetColor(colorOver), () => uiSprite.SetColor(color));
  61. uiTextComplex = new UI_TextComplex(uiSprite.gameObject.transform, Vector2.zero, 12, '#', text, null, null);
  62. uiTextComplex.SetTextColor(Color.black);
  63. uiTextComplex.SetAnchorMiddle();
  64. uiTextComplex.CenterOnPosition(Vector2.zero);
  65. return uiSprite;
  66. }
  67. public GameObject gameObject;
  68. public Image image;
  69. public RectTransform rectTransform;
  70. public UI_Sprite(Transform parent, Sprite sprite, Vector2 anchoredPosition, Vector2 size, Color color) {
  71. rectTransform = UtilsClass.DrawSprite(sprite, parent, anchoredPosition, size, "UI_Sprite");
  72. gameObject = rectTransform.gameObject;
  73. image = gameObject.GetComponent<Image>();
  74. image.color = color;
  75. }
  76. public void SetColor(Color color) {
  77. image.color = color;
  78. }
  79. public void SetSprite(Sprite sprite) {
  80. image.sprite = sprite;
  81. }
  82. public void SetSize(Vector2 size) {
  83. rectTransform.sizeDelta = size;
  84. }
  85. public void SetAnchoredPosition(Vector2 anchoredPosition) {
  86. rectTransform.anchoredPosition = anchoredPosition;
  87. }
  88. public Button_UI AddButton(Action ClickFunc, Action MouseOverOnceFunc, Action MouseOutOnceFunc) {
  89. Button_UI buttonUI = gameObject.AddComponent<Button_UI>();
  90. if (ClickFunc != null)
  91. buttonUI.ClickFunc = ClickFunc;
  92. if (MouseOverOnceFunc != null)
  93. buttonUI.MouseOverOnceFunc = MouseOverOnceFunc;
  94. if (MouseOutOnceFunc != null)
  95. buttonUI.MouseOutOnceFunc = MouseOutOnceFunc;
  96. return buttonUI;
  97. }
  98. public void DestroySelf() {
  99. UnityEngine.Object.Destroy(gameObject);
  100. }
  101. }
  102. }