유니티로 게임을 개발하다 보면 MonoBehaviour 스크립트에 수많은 public 변수나 [SerializeField] 변수들이 쌓이게 됩니다.
변수가 5개, 10개를 넘어가기 시작하면 Inspector(인스펙터) 창은 그야말로 혼돈의 도가니가 되곤 하죠. 어떤 게 이동 속도인지, 어떤 게 공격력인지 한눈에 들어오지 않아 스크롤을 위아래로 내리며 시간을 낭비한 경험, 다들 있으시죠?
오늘은 코드 한 줄로 여러분의 인스펙터 창을 전문가처럼 깔끔하게 정리해 주는 [Header] 속성에 대해 알아보겠습니다.
1. [Header] 속성이란?
[Header]는 유니티 인스펙터 창에서 변수들 위에 굵은 제목(라벨)을 달아주는 속성(Attribute)입니다.
기능적으로 게임 로직에 아무런 영향을 주지 않지만, 개발자(또는 레벨 디자이너)가 인스펙터 창을 볼 때 변수들의 카테고리를 시각적으로 구분해 주는 아주 강력한 도구입니다.
사용법
사용법은 매우 간단합니다. 변수 선언부 바로 위에 [Header("제목")]만 적어주면 됩니다.
[Header("보여질 텍스트")]
public int myVariable;
2. 실제 예제로 비교하기
RPG 게임의 플레이어 스크립트를 작성한다고 가정해 봅시다. 체력, 마나, 이동 속도, 점프력, 공격력, 공격 범위 등 수많은 변수가 섞여 있다면 어떻게 보일까요?
❌ [Header] 적용 전
변수들이 아무런 구분 없이 나열되어 있어 가독성이 떨어집니다.
using UnityEngine;
public class PlayerStats : MonoBehaviour
{
public float health = 100f;
public float mana = 50f;
public float moveSpeed = 5f;
public float runMultiplier = 1.5f;
public float jumpForce = 10f;
public int attackDamage = 20;
public float attackRange = 2.5f;
public float attackSpeed = 1.2f;
}
✅ [Header] 적용 후
변수들을 성격에 맞게 그룹화하여 인스펙터에서 훨씬 직관적으로 보입니다.
using UnityEngine;
public class PlayerStats : MonoBehaviour
{
[Header("Base Stats")] // 기본 스탯 그룹
public float health = 100f;
public float mana = 50f;
[Header("Movement Settings")] // 이동 관련 설정 그룹
public float moveSpeed = 5f;
public float runMultiplier = 1.5f;
public float jumpForce = 10f;
[Header("Combat Settings")] // 전투 관련 설정 그룹
public int attackDamage = 20;
public float attackRange = 2.5f;
public float attackSpeed = 1.2f;
}
이제 인스펙터 창을 보면 "Base Stats", "Movement Settings", "Combat Settings"라는 굵은 제목 아래에 변수들이 예쁘게 정렬된 것을 볼 수 있습니다.
3. 함께 쓰면 좋은 꿀팁 속성들
[Header]만 써도 훌륭하지만, 다음 속성들과 함께 사용하면 인스펙터의 가독성이 200% 상승합니다.
1) [Space]
[Header]는 제목을 달아주지만, 위쪽 변수와 간격을 벌려주지는 않습니다. 그룹 간에 시원한 여백을 주고 싶다면 [Space]를 사용하세요.
[Space(10)] // 10픽셀만큼 띄우기
[Header("Movement Settings")]
public float moveSpeed;
2) [Tooltip]
변수에 마우스를 올렸을 때 설명을 띄워주는 기능입니다. 협업할 때 필수적입니다.
[Header("Combat")]
[Tooltip("플레이어의 기본 공격 데미지입니다.")]
public int damage;
4. 주의사항
- 따옴표 필수: [Header("제목")] 안에는 반드시 큰따옴표("")로 문자열을 감싸야 합니다.
- 첫 번째 변수에만: 그룹의 가장 첫 번째 변수 위에만 적어주면 됩니다.
- Private 변수: private 변수라도 [SerializeField]를 사용해 인스펙터에 노출시킨다면 [Header]를 적용할 수 있습니다.
마무리
작은 습관이 개발 속도를 바꿉니다. 지금 당장 여러분의 복잡한 스크립트를 열어 [Header] 한 줄을 추가해 보세요. 나중에 이 코드를 다시 볼 미래의 자신과, 함께 일하는 동료들이 여러분에게 고마워할 것입니다!
'개발 > Unity' 카테고리의 다른 글
| (Unity) GetComponent 완벽 정리: 기본부터 최적화까지 (feat. InChildren, InParent) (0) | 2025.12.26 |
|---|---|
| (Unity) transform.position은 Vector3인데, 왜 Vector2 변수에 그냥 들어갈까? (0) | 2025.12.20 |
| (Unity) 근처 적을 스캔하고 최단 거리 대상 찾기 (1) | 2025.12.13 |
| (Unity) 회전하는 오브젝트 구현 가이드 (0) | 2025.12.12 |
| Unity 내장 오브젝트 풀(Object Pool) 사용하기 (0) | 2025.10.13 |