/* ------------------- Code Monkey ------------------- Thank you for downloading the Code Monkey Utilities I hope you find them useful in your projects If you have any questions use the contact form Cheers! unitycodemonkey.com -------------------------------------------------- */ using System; using UnityEngine; using UnityEngine.UI; namespace CodeMonkey.Utils { /* * Sprite in the UI * */ public class UI_Sprite { private static Transform GetCanvasTransform() { return UtilsClass.GetCanvasTransform(); } public static UI_Sprite CreateDebugButton(Vector2 anchoredPosition, Vector2 size, Action ClickFunc) { return CreateDebugButton(anchoredPosition, size, ClickFunc, Color.green); } public static UI_Sprite CreateDebugButton(Vector2 anchoredPosition, Vector2 size, Action ClickFunc, Color color) { UI_Sprite uiSprite = new UI_Sprite(GetCanvasTransform(), Assets.i.s_White, anchoredPosition, size, color); uiSprite.AddButton(ClickFunc, null, null); return uiSprite; } public static UI_Sprite CreateDebugButton(Transform parent, Vector2 anchoredPosition, string text, Action ClickFunc) { return CreateDebugButton(parent, anchoredPosition, text, ClickFunc, Color.green); } public static UI_Sprite CreateDebugButton(Vector2 anchoredPosition, string text, Action ClickFunc) { return CreateDebugButton(anchoredPosition, text, ClickFunc, Color.green); } public static UI_Sprite CreateDebugButton(Transform parent, Vector2 anchoredPosition, string text, Action ClickFunc, Color color) { return CreateDebugButton(parent, anchoredPosition, text, ClickFunc, color, new Vector2(30, 20)); } public static UI_Sprite CreateDebugButton(Vector2 anchoredPosition, string text, Action ClickFunc, Color color) { return CreateDebugButton(GetCanvasTransform(), anchoredPosition, text, ClickFunc, color, new Vector2(30, 20)); } public static UI_Sprite CreateDebugButton(Transform parent, Vector2 anchoredPosition, string text, Action ClickFunc, Color color, Vector2 padding) { UI_TextComplex uiTextComplex; UI_Sprite uiSprite = CreateDebugButton(parent, anchoredPosition, Vector2.zero, ClickFunc, color, text, out uiTextComplex); uiSprite.SetSize(new Vector2(uiTextComplex.GetTotalWidth(), uiTextComplex.GetTotalHeight()) + padding); return uiSprite; } public static UI_Sprite CreateDebugButton(Vector2 anchoredPosition, Vector2 size, Action ClickFunc, Color color, string text) { UI_TextComplex uiTextComplex; return CreateDebugButton(anchoredPosition, size, ClickFunc, color, text, out uiTextComplex); } public static UI_Sprite CreateDebugButton(Vector2 anchoredPosition, Vector2 size, Action ClickFunc, Color color, string text, out UI_TextComplex uiTextComplex) { return CreateDebugButton(GetCanvasTransform(), anchoredPosition, size, ClickFunc, color, text, out uiTextComplex); } public static UI_Sprite CreateDebugButton(Transform parent, Vector2 anchoredPosition, Vector2 size, Action ClickFunc, Color color, string text, out UI_TextComplex uiTextComplex) { if (color.r >= 1f) color.r = .9f; if (color.g >= 1f) color.g = .9f; if (color.b >= 1f) color.b = .9f; Color colorOver = color * 1.1f; // button over color lighter UI_Sprite uiSprite = new UI_Sprite(parent, Assets.i.s_White, anchoredPosition, size, color); uiSprite.AddButton(ClickFunc, () => uiSprite.SetColor(colorOver), () => uiSprite.SetColor(color)); uiTextComplex = new UI_TextComplex(uiSprite.gameObject.transform, Vector2.zero, 12, '#', text, null, null); uiTextComplex.SetTextColor(Color.black); uiTextComplex.SetAnchorMiddle(); uiTextComplex.CenterOnPosition(Vector2.zero); return uiSprite; } public GameObject gameObject; public Image image; public RectTransform rectTransform; public UI_Sprite(Transform parent, Sprite sprite, Vector2 anchoredPosition, Vector2 size, Color color) { rectTransform = UtilsClass.DrawSprite(sprite, parent, anchoredPosition, size, "UI_Sprite"); gameObject = rectTransform.gameObject; image = gameObject.GetComponent(); image.color = color; } public void SetColor(Color color) { image.color = color; } public void SetSprite(Sprite sprite) { image.sprite = sprite; } public void SetSize(Vector2 size) { rectTransform.sizeDelta = size; } public void SetAnchoredPosition(Vector2 anchoredPosition) { rectTransform.anchoredPosition = anchoredPosition; } public Button_UI AddButton(Action ClickFunc, Action MouseOverOnceFunc, Action MouseOutOnceFunc) { Button_UI buttonUI = gameObject.AddComponent(); if (ClickFunc != null) buttonUI.ClickFunc = ClickFunc; if (MouseOverOnceFunc != null) buttonUI.MouseOverOnceFunc = MouseOverOnceFunc; if (MouseOutOnceFunc != null) buttonUI.MouseOutOnceFunc = MouseOutOnceFunc; return buttonUI; } public void DestroySelf() { UnityEngine.Object.Destroy(gameObject); } } }