유니티 인스펙터 정리하기! (어트리뷰트) [유니티 C#]

인스펙터를 깔끔하게 만드는 어트리뷰트

게임에 변수가 많아지면 인스펙터의 정리가 필요합니다.

오늘은 인스펙터를 정리할 수 있는 어트리뷰트 몇 가지를 살펴보겠습니다!

1. 헤더 [Header]

C#
using UnityEngine;

public class Player : MonoBehaviour
{
    [Header("Stats")]
    public int health = 100;
    public int mana = 50;
    public int stamina = 75;

    [Header("Movement")]
    public float moveSpeed = 5.0f;
    public float jumpHeight = 2.0f;
}

[Header] 어트리뷰트를 사용하면 인스펙터에 굵은 글씨로 제목이 생성됩니다.

코드 및 인스펙터에서 구획을 나누기에 유용합니다.

2. 설명서 [Tooltip]

C#
using UnityEngine;

public class Player : MonoBehaviour
{
    [Tooltip("플레이어의 이동속도")]
    public float moveSpeed = 5.0f;

    [Tooltip("플레이어의 점프 높이")]
    public float jumpHeight = 2.0f;
}

[Tooltip] 어트리뷰트를 사용하면, 인스펙터의 변수 위에 마우스를 올려놓으면 해당 변수의 설명을 보여줍니다.

변수의 이름 만으로 유추하기 어렵거나 추가적인 설명이 필요할 때 사용됩니다.

3. 슬라이더 [Range]

C#
using UnityEngine;

public class Player : MonoBehaviour
{
    [Range(1, 100)] public int age;

    [Range(0.0f, 200.0f)] public float height;
}

[Range] 어트리뷰트는 인스펙터에 일정 범위 내에서 조작 가능한 슬라이더를 추가해줍니다.

명확한 최소, 최댓값이 존재할 때 유용합니다.

4. 직렬화 [SerializeField]

C#
using UnityEngine;

public class Player : MonoBehaviour
{
    [SerializeField] private int _health = 100;
    [SerializeField] private int _mana = 50;
}

[SerializeField] 어트리뷰트 ‘직렬화’라고도 하며, private 변수를 인스펙터에서 보여지게 합니다.

굳이 public으로 선언 할 필요가 없는 변수 (타 클래스 등에서 접근 할 필요가 없는 변수)는 직렬화하여 인스펙터에서만 보여지게 만들 수 있습니다.

5. 마무리

유니티 문법 중 인스펙터를 깔끔하게 관리 할 수 있는 4가지의 대표적인 어트리뷰트들을 살펴봤습니다.

아래 4가지 어트리뷰트를 사용한 종합예제 코드가 있으니 여러분의 코드에도 적용해보세요!

C#
using UnityEngine;

public class Player : MonoBehaviour
{
    [Header("기본 정보")]  
    [SerializeField] private string _characterName = "Mr.Kim";

    [Header("전투 스탯")]
    [Tooltip("캐릭터의 최대 체력 (0 ~ 1000)")]
    [Range(0, 1000)]
    public int maxHealth = 100;

    [Tooltip("공격력")]   
    [SerializeField] private int _atk = 10;
}

댓글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다