|
|
/* ------------------- 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 UnityEngine;
namespace CodeMonkey.Utils {
/* * Bar in the World, great for quickly making a health bar * */ public class World_Bar { private GameObject gameObject; private Transform transform; private Transform background; private Transform bar;
public static int GetSortingOrder(Vector3 position, int offset, int baseSortingOrder = 5000) { return (int)(baseSortingOrder - position.y) + offset; }
public class Outline { public float size = 1f; public Color color = Color.black; }
public World_Bar(Transform parent, Vector3 localPosition, Vector3 localScale, Color? backgroundColor, Color barColor, float sizeRatio, int sortingOrder, Outline outline = null) { SetupParent(parent, localPosition); if (outline != null) SetupOutline(outline, localScale, sortingOrder - 1); if (backgroundColor != null) SetupBackground((Color)backgroundColor, localScale, sortingOrder); SetupBar(barColor, localScale, sortingOrder + 1); SetSize(sizeRatio); } private void SetupParent(Transform parent, Vector3 localPosition) { gameObject = new GameObject("World_Bar"); transform = gameObject.transform; transform.SetParent(parent); transform.localPosition = localPosition; } private void SetupOutline(Outline outline, Vector3 localScale, int sortingOrder) { UtilsClass.CreateWorldSprite(transform, "Outline", Assets.i.s_White, new Vector3(0,0), localScale + new Vector3(outline.size, outline.size), sortingOrder, outline.color); } private void SetupBackground(Color backgroundColor, Vector3 localScale, int sortingOrder) { background = UtilsClass.CreateWorldSprite(transform, "Background", Assets.i.s_White, new Vector3(0,0), localScale, sortingOrder, backgroundColor).transform; } private void SetupBar(Color barColor, Vector3 localScale, int sortingOrder) { GameObject barGO = new GameObject("Bar"); bar = barGO.transform; bar.SetParent(transform); bar.localPosition = new Vector3(-localScale.x / 2f, 0, 0); bar.localScale = new Vector3(1,1,1); Transform barIn = UtilsClass.CreateWorldSprite(bar, "BarIn", Assets.i.s_White, new Vector3(localScale.x / 2f, 0), localScale, sortingOrder, barColor).transform; } public void SetRotation(float rotation) { transform.localEulerAngles = new Vector3(0, 0, rotation); } public void SetSize(float sizeRatio) { bar.localScale = new Vector3(sizeRatio, 1, 1); } public void SetColor(Color color) { bar.Find("BarIn").GetComponent<SpriteRenderer>().color = color; } public void Show() { gameObject.SetActive(true); } public void Hide() { gameObject.SetActive(false); } public Button_Sprite AddButton(System.Action ClickFunc, System.Action MouseOverOnceFunc, System.Action MouseOutOnceFunc) { Button_Sprite buttonSprite = gameObject.AddComponent<Button_Sprite>(); if (ClickFunc != null) buttonSprite.ClickFunc = ClickFunc; if (MouseOverOnceFunc != null) buttonSprite.MouseOverOnceFunc = MouseOverOnceFunc; if (MouseOutOnceFunc != null) buttonSprite.MouseOutOnceFunc = MouseOutOnceFunc; return buttonSprite; } public void DestroySelf() { if (gameObject != null) { Object.Destroy(gameObject); } }
} }
|