Version: 2022.2
언어: 한국어
중요 클래스 - Debug
Unity 아키텍처

중요 클래스 - Gizmos 및 Handles

Gizmos 및 Handles 클래스를 사용하면 씬 뷰와 게임 뷰에 라인과 모양뿐만 아니라 인터랙티브 핸들과 컨트롤도 그릴 수 있습니다. 이 두 클래스를 함께 사용하면 이러한 뷰에 표시되는 요소를 확장하고, 원하는 방식으로 프로젝트를 편집할 수 있는 인터랙티브 툴을 빌드할 수 있습니다. 예를 들어 인스펙터에서 숫자를 입력하는 대신, 논플레이어 캐릭터(NPC) 주위에 드래그 가능한 원형 반지름 기즈모를 만들 수 있습니다. 이 기즈모는 플레이어를 보거나 플레이어의 소리를 들을 수 있는 영역을 나타냅니다.

이 페이지에서는 Gizmos 및 Handles 클래스에 대한 간단한 개요를 제공합니다. Gizmos 및 Handles 클래스의 모든 멤버에 대한 전체 문서와 레퍼런스는 GizmosHandles 스크립트 레퍼런스 페이지를 참조하십시오.

기즈모

Gizmos 클래스를 사용하면 프로젝트를 개발하는 동안 디버깅, 설정 지원 또는 툴로 사용할 라인, 구체, 큐브, 아이콘, 텍스처, 메시를 씬 뷰에 그릴 수 있습니다.

예를 들어 게임 오브젝트 주의에 10단위 노란색 와이어 큐브를 그리려면 다음 코드를 사용할 수 있습니다.

using UnityEngine;
public class GizmosExample : MonoBehaviour
{
    void OnDrawGizmosSelected()
    {
        // Draw a yellow cube at the transform position
        Gizmos.color = Color.yellow;
        Gizmos.DrawWireCube(transform.position, new Vector3(10, 10, 10));
    }
}

다음은 방향 광원 게임 오브젝트에 배치한 큐브의 모습입니다.

포지션 주위에 큐브 기즈모를 그리는 추가 스크립트가 적용된 광원 게임 오브젝트
포지션 주위에 큐브 기즈모를 그리는 추가 스크립트가 적용된 광원 게임 오브젝트

전체 문서와 Gizmos 사용법은 Gizmos 스크립트 레퍼런스 페이지를 참조하십시오.

핸들

Gizmos와 유사하지만, 상호작용 및 조작 부문에서 더 많은 기능을 제공합니다. Unity가 씬 뷰에서 항목을 조작하기 위해 제공하는 3D 컨트롤은 Gizmos와 Handles의 조합입니다. Transform 컴포넌트를 통해 오브젝트를 배치, 스케일 및 회전시키는 기존의 익숙한 툴을 비롯하여 다양한 빌트인 핸들 GUI를 제공합니다. 하지만 커스텀 컴포넌트 에디터에서 사용할 고유한 핸들 GUI를 정의할 수 있습니다. 이러한 GUI는 절차적으로 생성된 씬 콘텐츠, 관련 오브젝트의 “보이지 않는” 항목 및 그룹(예: 웨이포인트, 위치 마커)을 편집할 때 매우 유용합니다.

예를 들어 다음은 화살표 모양 핸들을 사용하여 원호 영역을 생성하여 씬 뷰에서 “보호막 영역”을 수정하는 방법을 보여줍니다.

using UnityEditor;
using UnityEngine;
using System.Collections;

//this class should exist somewhere in your project
public class WireArcExample : MonoBehaviour
{
    public float shieldArea;
}

// Create a 180 degrees wire arc with a ScaleValueHandle attached to the disc
// that lets you modify the "shieldArea" value in the WireArcExample
[CustomEditor(typeof(WireArcExample))]
public class DrawWireArc : Editor
{
    void OnSceneGUI()
    {
        Handles.color = Color.red;
        WireArcExample myObj = (WireArcExample)target;
        Handles.DrawWireArc(myObj.transform.position, myObj.transform.up, -myObj.transform.right, 180, myObj.shieldArea);
        myObj.shieldArea = (float)Handles.ScaleValueHandle(myObj.shieldArea, myObj.transform.position + myObj.transform.forward * myObj.shieldArea, myObj.transform.rotation, 1, Handles.ConeHandleCap, 1);
    }
}
원호 핸들과 스케일 핸들의 예
원호 핸들과 스케일 핸들의 예

전체 문서와 Handles 사용법은 Handles 스크립트 레퍼런스 페이지를 참조하십시오.

중요 클래스 - Debug
Unity 아키텍처