본문 바로가기
개발/Unity

Unity) 기즈모 활용 하기(Gizmos)

by 테샤르 2021. 10. 13.

기즈모 활용 하기(Gizmos)

 

Unity 에서 Editor에서 보이는 Gizmo를 커스터마이징해서 필요한 정보를 더 많이 노출되고 개발에 용이하게 사용이 가능하다.  Edior에서만 처리가되기 때문에 처리하는 플랫폼이 Editor가 아닌 경우에는 노출되지 않는것을 명심해야 한다.

 

Unity 설명에서 Gizmos는 시각적 디버깅 또는 씬뷰에서 설정을 돕기위해서 사용한다고 한다.

항상 노출되려면 OnDrawGizmos 에서 구현한다.

반응형

 

오브젝트를 선택할때 기즈모에서 나오도록 하는 경우는 OnDrawGizmosSelected 에서 구현한다.

OnDrawGizmos는 매 프레임마다 호출된다.

using UnityEditor;


    void OnDrawGizmos() {
    	//Always
    }
    
   void OnDrawGizmosSelected() {
   	//Select Object
   }

 

Gizmos에 정보를 표현하는 방식으로 Text 출력은 다음과 같다.

Handles.Label(GetUpPosition(), $"HP {hp}");

 

< Gizmos Icon >

Gizmos를 통한 Icon 표현 참고로 Assets/Gizmos의 경로에 Icon이 있어야 한다.

Gizmos.DrawIcon(position, "icon", true);

< Gizmos  Line 추가 >

 Gizmos.DrawLine(startPosition, endPosition);

 

 

반응형

<Unity Test Code>

using UnityEngine;
using UnityEditor;
public class ExampleScript : MonoBehaviour
{
    public float value = 7.0f;
}

// A tiny custom editor for ExampleScript component
[CustomEditor(typeof(ExampleScript))]
public class ExampleEditor : Editor
{
    // Custom in-scene UI for when ExampleScript
    // component is selected.
    public void OnSceneGUI()
    {
        var t = target as ExampleScript;
        var tr = t.transform;
        var pos = tr.position;
        // display an orange disc where the object is
        var color = new Color(1, 0.8f, 0.4f, 1);
        Handles.color = color;
        Handles.DrawWireDisc(pos, tr.up, 1.0f);
        // display object "value" in scene
        GUI.color = color;
        Handles.Label(pos, t.value.ToString("F1"));
    }
}

 

반응형

< Gizmos 옵션 >

 Gizmos에 대한 자주 사용하는 옵션은 다음과 같다.

.color 색상 변경
.DrawCube 큐브 생성
.DrwaGUITexture 텍스쳐 생성
.DrawIcon 아이콘 생성
.DrawLine from~ to로 향하는 라인 생성
.DrawMesh Mesh 생성
.DrawRay from 에서 direction 있는 Ray 생성
.DrawSphere 구체 생성
.DrawWireCube Wireframe box 생성
.DrawWireMesh WireFrame Mesh 생성
.DrawWireSphere WireFrame 구체 생성

 

Gizmos를 활용하는 방법은 무궁무진하다.

이동하는 WayPoint를 시각적으로 표현하는 코드는 다음과 같다.

if(platform.waypoints.Length <2)
	return;
    
Gizmos.color = Color.white;
for(int i=0; i<platform.waypoints.Length -1 ;i++)
	Gizmos.DrawLine(platform.waypoints[i].position, platform.waypoints[i+1].position);
    
if(platform.loop)
	Gizmos.DrawLine(platform.waypoints[0].position, platform.waypoints[platform.waypoints.Lenght-1].position);

 

Unity Gizmos Menu  : [링크]

 

Unity - Manual: Gizmos menu

Gizmos menu The Scene viewAn interactive view into the world you are creating. You use the Scene View to select and position scenery, characters, cameras, lights, and all other types of Game Object. More infoSee in Glossary and the Game view both have a Gi

docs.unity3d.com

 

Unity Gizmos Function : [링크]

 

Unity - 스크립팅 API: Gizmos

Success! Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable. 닫기

docs.unity3d.com

 

Creating Custom Gizmos for Development : [링크]

 

Creating Custom Gizmos for Development - 2019.2 - Unity Learn

In this tutorial, we’ll explore the many wonders of custom Gizmos. Most often experienced in the form of the scale, rotate, and translate tools in the Unity Editor, Gizmos are capable of much more, and are among the easiest, most versatile ways to custom

learn.unity.com

 

 

 

★☆☆☆☆

 

반응형

댓글