SW 중심대학 OSS GIT 서버 박건태, 이승준, 고기완, 이준호 새로운 배포
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

130 lines
6.4 KiB

4 years ago
  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 UnityEngine;
  11. namespace CodeMonkey.Utils {
  12. /*
  13. * Sprite in the World
  14. * */
  15. public class World_Sprite {
  16. private const int sortingOrderDefault = 5000;
  17. public GameObject gameObject;
  18. public Transform transform;
  19. private SpriteRenderer spriteRenderer;
  20. public static World_Sprite CreateDebugButton(Vector3 position, System.Action ClickFunc) {
  21. World_Sprite worldSprite = new World_Sprite(null, position, new Vector3(10, 10), Assets.i.s_White, Color.green, sortingOrderDefault);
  22. worldSprite.AddButton(ClickFunc, null, null);
  23. return worldSprite;
  24. }
  25. public static World_Sprite CreateDebugButton(Transform parent, Vector3 localPosition, System.Action ClickFunc) {
  26. World_Sprite worldSprite = new World_Sprite(parent, localPosition, new Vector3(10, 10), Assets.i.s_White, Color.green, sortingOrderDefault);
  27. worldSprite.AddButton(ClickFunc, null, null);
  28. return worldSprite;
  29. }
  30. public static World_Sprite CreateDebugButton(Transform parent, Vector3 localPosition, string text, System.Action ClickFunc, int fontSize = 30, float paddingX = 5, float paddingY = 5) {
  31. GameObject gameObject = new GameObject("DebugButton");
  32. gameObject.transform.parent = parent;
  33. gameObject.transform.localPosition = localPosition;
  34. TextMesh textMesh = UtilsClass.CreateWorldText(text, gameObject.transform, Vector3.zero, fontSize, Color.white, TextAnchor.MiddleCenter, TextAlignment.Center, 20000);
  35. Bounds rendererBounds = textMesh.GetComponent<MeshRenderer>().bounds;
  36. Color color = UtilsClass.GetColorFromString("00BA00FF");
  37. if (color.r >= 1f) color.r = .9f;
  38. if (color.g >= 1f) color.g = .9f;
  39. if (color.b >= 1f) color.b = .9f;
  40. Color colorOver = color * 1.1f; // button over color lighter
  41. World_Sprite worldSprite = new World_Sprite(gameObject.transform, Vector3.zero, rendererBounds.size + new Vector3(paddingX, paddingY), Assets.i.s_White, color, sortingOrderDefault);
  42. worldSprite.AddButton(ClickFunc, () => worldSprite.SetColor(colorOver), () => worldSprite.SetColor(color));
  43. return worldSprite;
  44. }
  45. public static World_Sprite Create(Transform parent, Vector3 localPosition, Vector3 localScale, Sprite sprite, Color color, int sortingOrderOffset) {
  46. return new World_Sprite(parent, localPosition, localScale, sprite, color, sortingOrderOffset);
  47. }
  48. public static World_Sprite Create(Vector3 worldPosition, Sprite sprite) {
  49. return new World_Sprite(null, worldPosition, new Vector3(1, 1, 1), sprite, Color.white, 0);
  50. }
  51. public static World_Sprite Create(Vector3 worldPosition, Vector3 localScale, Sprite sprite, Color color, int sortingOrderOffset) {
  52. return new World_Sprite(null, worldPosition, localScale, sprite, color, sortingOrderOffset);
  53. }
  54. public static World_Sprite Create(Vector3 worldPosition, Vector3 localScale, Sprite sprite, Color color) {
  55. return new World_Sprite(null, worldPosition, localScale, sprite, color, 0);
  56. }
  57. public static World_Sprite Create(Vector3 worldPosition, Vector3 localScale, Color color) {
  58. return new World_Sprite(null, worldPosition, localScale, Assets.i.s_White, color, 0);
  59. }
  60. public static World_Sprite Create(Vector3 worldPosition, Vector3 localScale) {
  61. return new World_Sprite(null, worldPosition, localScale, Assets.i.s_White, Color.white, 0);
  62. }
  63. public static World_Sprite Create(Vector3 worldPosition, Vector3 localScale, int sortingOrderOffset) {
  64. return new World_Sprite(null, worldPosition, localScale, Assets.i.s_White, Color.white, sortingOrderOffset);
  65. }
  66. public static int GetSortingOrder(Vector3 position, int offset, int baseSortingOrder = sortingOrderDefault) {
  67. return (int)(baseSortingOrder - position.y) + offset;
  68. }
  69. public World_Sprite(Transform parent, Vector3 localPosition, Vector3 localScale, Sprite sprite, Color color, int sortingOrderOffset) {
  70. int sortingOrder = GetSortingOrder(localPosition, sortingOrderOffset);
  71. gameObject = UtilsClass.CreateWorldSprite(parent, "Sprite", sprite, localPosition, localScale, sortingOrder, color);
  72. transform = gameObject.transform;
  73. spriteRenderer = gameObject.GetComponent<SpriteRenderer>();
  74. }
  75. public void SetSortingOrderOffset(int sortingOrderOffset) {
  76. SetSortingOrder(GetSortingOrder(gameObject.transform.position, sortingOrderOffset));
  77. }
  78. public void SetSortingOrder(int sortingOrder) {
  79. gameObject.GetComponent<SpriteRenderer>().sortingOrder = sortingOrder;
  80. }
  81. public void SetLocalScale(Vector3 localScale) {
  82. transform.localScale = localScale;
  83. }
  84. public void SetPosition(Vector3 localPosition) {
  85. transform.localPosition = localPosition;
  86. }
  87. public void SetColor(Color color) {
  88. spriteRenderer.color = color;
  89. }
  90. public void SetSprite(Sprite sprite) {
  91. spriteRenderer.sprite = sprite;
  92. }
  93. public void Show() {
  94. gameObject.SetActive(true);
  95. }
  96. public void Hide() {
  97. gameObject.SetActive(false);
  98. }
  99. public Button_Sprite AddButton(System.Action ClickFunc, System.Action MouseOverOnceFunc, System.Action MouseOutOnceFunc) {
  100. gameObject.AddComponent<BoxCollider2D>();
  101. Button_Sprite buttonSprite = gameObject.AddComponent<Button_Sprite>();
  102. if (ClickFunc != null)
  103. buttonSprite.ClickFunc = ClickFunc;
  104. if (MouseOverOnceFunc != null)
  105. buttonSprite.MouseOverOnceFunc = MouseOverOnceFunc;
  106. if (MouseOutOnceFunc != null)
  107. buttonSprite.MouseOutOnceFunc = MouseOutOnceFunc;
  108. return buttonSprite;
  109. }
  110. public void DestroySelf() {
  111. Object.Destroy(gameObject);
  112. }
  113. }
  114. }