초기 커밋.
This commit is contained in:
105
Assets/Scripts/UVC/util/GizmoDraw.cs
Normal file
105
Assets/Scripts/UVC/util/GizmoDraw.cs
Normal file
@@ -0,0 +1,105 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace UVC.Util
|
||||
{
|
||||
/// <summary>
|
||||
/// GizmoDraw 클래스는 Unity의 Gizmo를 사용하여 Sphere, Box, 또는 Mesh를 그리는 기능을 제공합니다.
|
||||
/// </summary>
|
||||
public class GizmoDraw : MonoBehaviour
|
||||
{
|
||||
/// <summary>
|
||||
/// Gizmo의 타입을 정의합니다. Sphere, Box, 또는 Mesh 중 하나를 선택할 수 있습니다.
|
||||
/// </summary>
|
||||
public enum GizmoType
|
||||
{
|
||||
Sphere,
|
||||
Box,
|
||||
Mesh
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 현재 Gizmo의 타입을 설정합니다.
|
||||
/// </summary>
|
||||
public GizmoType gizmoType;
|
||||
|
||||
/// <summary>
|
||||
/// Gizmo를 화면에 표시할지 여부를 설정합니다.
|
||||
/// </summary>
|
||||
public bool show = true;
|
||||
|
||||
/// <summary>
|
||||
/// Gizmo를 와이어프레임으로 그릴지 여부를 설정합니다.
|
||||
/// </summary>
|
||||
public bool wire = false;
|
||||
|
||||
/// <summary>
|
||||
/// Gizmo의 색상을 설정합니다.
|
||||
/// </summary>
|
||||
[SerializeField]
|
||||
private Color color = Color.yellow;
|
||||
|
||||
/// <summary>
|
||||
/// Sphere Gizmo의 반지름을 설정합니다.
|
||||
/// </summary>
|
||||
[SerializeField]
|
||||
private float radius = 1f;
|
||||
|
||||
/// <summary>
|
||||
/// Box Gizmo의 경계(Bounds)를 설정합니다.
|
||||
/// </summary>
|
||||
public Bounds bounds = new Bounds(Vector3.zero, Vector3.one);
|
||||
|
||||
/// <summary>
|
||||
/// Mesh Gizmo를 그릴 때 사용할 Mesh를 설정합니다.
|
||||
/// </summary>
|
||||
public Mesh mesh;
|
||||
|
||||
/// <summary>
|
||||
/// Mesh Gizmo의 스케일을 설정합니다.
|
||||
/// </summary>
|
||||
public float scale = 1f;
|
||||
|
||||
/// <summary>
|
||||
/// Unity의 Gizmo를 그리는 메소드입니다. Unity 에디터에서만 동작합니다.
|
||||
/// </summary>
|
||||
/// <example>
|
||||
/// GizmoDraw 컴포넌트를 사용하여 Sphere를 그리는 예제:
|
||||
/// <code>
|
||||
/// var gizmoDraw = gameObject.AddComponent<GizmoDraw>();
|
||||
/// gizmoDraw.gizmoType = GizmoDraw.GizmoType.Sphere;
|
||||
/// gizmoDraw.show = true;
|
||||
/// gizmoDraw.wire = false;
|
||||
/// gizmoDraw.radius = 2f;
|
||||
/// </code>
|
||||
/// </example>
|
||||
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));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user