using UnityEngine; namespace UVC.Util { /// /// GizmoDraw Ŭ·¡½º´Â UnityÀÇ Gizmo¸¦ »ç¿ëÇÏ¿© Sphere, Box, ¶Ç´Â Mesh¸¦ ±×¸®´Â ±â´ÉÀ» Á¦°øÇÕ´Ï´Ù. /// public class GizmoDraw : MonoBehaviour { /// /// GizmoÀÇ Å¸ÀÔÀ» Á¤ÀÇÇÕ´Ï´Ù. Sphere, Box, ¶Ç´Â Mesh Áß Çϳª¸¦ ¼±ÅÃÇÒ ¼ö ÀÖ½À´Ï´Ù. /// public enum GizmoType { Sphere, Box, Mesh } /// /// ÇöÀç GizmoÀÇ Å¸ÀÔÀ» ¼³Á¤ÇÕ´Ï´Ù. /// public GizmoType gizmoType; /// /// Gizmo¸¦ È­¸é¿¡ Ç¥½ÃÇÒÁö ¿©ºÎ¸¦ ¼³Á¤ÇÕ´Ï´Ù. /// public bool show = true; /// /// Gizmo¸¦ ¿ÍÀ̾îÇÁ·¹ÀÓÀ¸·Î ±×¸±Áö ¿©ºÎ¸¦ ¼³Á¤ÇÕ´Ï´Ù. /// public bool wire = false; /// /// GizmoÀÇ »ö»óÀ» ¼³Á¤ÇÕ´Ï´Ù. /// [SerializeField] private Color color = Color.yellow; /// /// Sphere GizmoÀÇ ¹ÝÁö¸§À» ¼³Á¤ÇÕ´Ï´Ù. /// [SerializeField] private float radius = 1f; /// /// Box GizmoÀÇ °æ°è(Bounds)¸¦ ¼³Á¤ÇÕ´Ï´Ù. /// public Bounds bounds = new Bounds(Vector3.zero, Vector3.one); /// /// Mesh Gizmo¸¦ ±×¸± ¶§ »ç¿ëÇÒ Mesh¸¦ ¼³Á¤ÇÕ´Ï´Ù. /// public Mesh mesh; /// /// Mesh GizmoÀÇ ½ºÄÉÀÏÀ» ¼³Á¤ÇÕ´Ï´Ù. /// public float scale = 1f; /// /// UnityÀÇ Gizmo¸¦ ±×¸®´Â ¸Þ¼ÒµåÀÔ´Ï´Ù. Unity ¿¡µðÅÍ¿¡¼­¸¸ µ¿ÀÛÇÕ´Ï´Ù. /// /// /// GizmoDraw ÄÄÆ÷³ÍÆ®¸¦ »ç¿ëÇÏ¿© Sphere¸¦ ±×¸®´Â ¿¹Á¦: /// /// var gizmoDraw = gameObject.AddComponent(); /// gizmoDraw.gizmoType = GizmoDraw.GizmoType.Sphere; /// gizmoDraw.show = true; /// gizmoDraw.wire = false; /// gizmoDraw.radius = 2f; /// /// void OnDrawGizmos() { if (this.show) { Gizmos.color = color; if (gizmoType == GizmoType.Sphere) { if (wire) Gizmos.DrawWireSphere(transform.position, radius); else Gizmos.DrawSphere(transform.position, radius); } else if (gizmoType == GizmoType.Box) { if (wire) Gizmos.DrawWireCube(transform.position + bounds.center, bounds.size); else Gizmos.DrawCube(transform.position + bounds.center, bounds.size); } else { if (wire) Gizmos.DrawWireMesh(mesh, transform.position, Quaternion.identity, new Vector3(scale, scale, scale)); else Gizmos.DrawMesh(mesh, transform.position, Quaternion.identity, new Vector3(scale, scale, scale)); } } } } }