Attribute ( 애트리뷰트 )

2025. 10. 14. 14:52·🧊Unity Basic/애트리뷰트

Attribute ( 애트리뷰트 )

C# 이나 Unity 에서 속성 또는 메타데이터를 코드 요소 ( 클래스 , 메서드 , 변수 등 )에 추가 정보로 표시할 때 사용하는 기능이다.

Attribute ( 애트리뷰트 ) 는 코드에 의미를 추가하는 주석 같은 존재
프로개름의 클래스 , 메서드 , 필드 , 프로퍼티 등에 추가적인 정보를 부여하는 메타데이터

코드 자체에는 영향을 주지 않는다.

컴파일러나 런타임 , 혹은 다른 툴이 이 정보를 읽고 동작을 다르게 하도록 지시하는 역할을 한다.

단순한 주석이 아니라 , 실제 코드 안에서 읽히고 활용되는 구주화된 데이터이다.

여기서는 Unity 에서의 애트리뷰트의 개념에 대해 정리한다.

 

Unity 에서의 Attribute

코드에 부가적인 정보나 지시문을 붙인다.
Unity 에디터나 엔진이 특정 방식을 동작하도록 하는 메타데이터이다.

코드 자체의 로직은 그대로 두고

Inspector 창에서의 표시 방식이나 실행 방식 , 컴포넌트 조건 등을 바꿔주는 역할을 한다.

예시 :
private 변수인데도 인스펙터창에 보이게 하고 싶거나 , 값을 제한하거나 , 자동으로 컴포넌트를 붙이게 하고 싶을때 사용

 

 

작동 원리

Unity 는 C# 의 애트리뷰트 시스템을 기반으로 동작한다

[ Something ] 이라 작성하면 , SomethingAttribute 라는 클래스가

컴파일러와 Unity 에디터에 "이 코드 요소는 이런 특성이 있다" 라고 알려주는 것이다.

 

에디터는 그 정보를 읽고 ( 리플렉션 이용 )

  • 인스펙터 UI 를 다르게 표시하거나
  • 특정 컴포넌트를 자동으로 추가하거나
  • 실행 타이밍을 제어하는 등의 특수 동작을 수행한다.

 

 

유니티에서 자주 사용하는 애트리뷰트 종류

▼인스펙터 표시 관련

애트리뷰트 설명
[SerializeField] private 변수라도 인스펙터에 표시되게 한다
[HideInInspector] public 변수라도 인스펙터에 안보이게 한다
[Header("제목")] 인스펙터에 제목 / 구분선 표시
[Tooltip("설명")] 마우스 오버 시 도움말 툴팁 표시
[Range(min, max)] 슬라이더 UI 로 숫자값 입력 가능
[TextArea(minLines, maxLines)] 여러 줄 문자열 입력창 표시
[Multiline] 간단히 여러 줄 입력창 표시

 

 

▼컴포넌트 관련

애트리뷰트 설명
[RequireComponent(typeof(Collider))] 스크립트를 붙이면 자동으로 Collider 도 추가
[DisallowMultipleComponent] 같은 스크립트를 한 오브젝트에 여러 개 붙이지 못하게 한다
[ExecuteInEditMode] 에디터 모드에서도 Update( ) 나 OnGUI( ) 등 실행
[AddComponentMenu("경로/이름")] Add Component 메뉴에 커스텀 경로로 표시

 

 

▼실행 관련

애트리뷰트 설명
[ContextMenu("이름")] 인스펙터 메뉴에서 수동 실행 버튼 추가
[RuntimeInitializeOnLoadMethod] 게임 실행 시 자동으로 실행되는 정적 메서드
[InitializeOnLoadMethod] 에디터가 열릴 때 자동 실행되는 정적 메서드 ( 에디터 전용 )

 

 

 

예시 코드

[SerializeField]

private 변수지만 인스펙터에서 조절하고 싶을 때

using UnityEngine;

public class Player : MonoBehaviour
{
    [SerializeField] private int hp = 100;
    [SerializeField] private float speed = 5f;
}

 

 

[Header], [Tooltip], [Range]

인스펙터에 제목 구분선 , 툴팁 , 슬라이더가 표시

using UnityEngine;

public class Gun : MonoBehaviour
{
    [Header("총기 설정")]
    [Tooltip("탄창의 최대 장탄 수")]
    [Range(1, 100)]
    public int ammo = 30;

    [Header("발사 관련")]
    [SerializeField] private float fireRate = 0.5f;
}

 

 

 

주의할 점

  • [SerializeField]는 private 변수만 표시할 때 쓰는 게 일반적이다.
    public 변수에는 자동으로 표시되니까 굳이 붙일 필요 없다.
  • [ExecuteInEditMode]는 Update가 너무 자주 호출되므로 에디터 성능 저하 주의.
  • [RequireComponent]는 한 번 추가되면 수동으로 삭제하려 해도 Unity가 막을 수 있다.
  • 애트리뷰트는 코드 실행 순서를 바꾸진 않는다.
    오직 "Unity 에디터나 컴파일러가 읽는 힌트" 역할만 한다.

 

 

정리

Unity 애트리뷰트는 코드의 동작을 바꾸지 않으면서도

인스펙터 UI , 컴포넌트 제약 , 실행 방식 등을 제어하는 메타데이터 도구이다.

'🧊Unity Basic > 애트리뷰트' 카테고리의 다른 글

📌애트리뷰트 한줄 요약  (0) 2025.10.14
'🧊Unity Basic/애트리뷰트' 카테고리의 다른 글
  • 📌애트리뷰트 한줄 요약
DevHoChan
DevHoChan
맨땅에서 시작하는 코딩 도전
  • DevHoChan
    Debugging Life
    DevHoChan
  • 전체
    오늘
    어제
    • 분류 전체보기 (374)
      • 🕹️Game Life (1)
      • 🖥️Computer Science (5)
      • 📖TIL (141)
        • 🔥Projects (16)
        • 💡DevTips (5)
        • 🤔발생한 문제와 해결 (5)
        • 🔮Unity Graphics (5)
        • 🎤Interview (3)
        • ✅CodingTest (9)
      • 🚀Game Release (4)
      • 🧊Unity Basic (58)
        • 📌용어 사전 (1)
        • 에디터&인터페이스 (3)
        • 디버그 (1)
        • 라이프사이클 (4)
        • 게임오브젝트 (4)
        • 프리팹 (1)
        • 오브젝트풀링 (4)
        • 애트리뷰트 (2)
        • 트랜스폼 (4)
        • 물리&충돌 (1)
        • 프레임&델타타임 (4)
        • 코루틴&이벤트 (7)
        • 수학&보정함수 (3)
        • 디자인패턴 (9)
        • UGUI (3)
        • 벡터 ( Vector ) (3)
        • 씬 ( Scene ) (2)
        • 데이터 관리 (2)
      • ⭐C Sharp (99)
        • 📌용어 사전 (1)
        • 📌문법 사전 (6)
        • 메모리 관리 (3)
        • 00. 문법 (17)
        • 01. 변수 (3)
        • 02. 자료형 (2)
        • 03. 연산자 (6)
        • 04. 조건문 (2)
        • 05. 반복문 (2)
        • 06. 배열 (3)
        • 07. 메서드(함수) (7)
        • 08. 열거형 (3)
        • 09. 구조체 (2)
        • 10. 참조 (2)
        • 11. 객체 지향 (11)
        • 12. 델리게이트 (3)
        • 13. 디자인 패턴 (7)
        • 14. LINQ (1)
        • 📂▼자료구조 (2)
        • 15-1. 제네릭 (3)
        • 15-2. 배열 (4)
        • 15-3. 리스트 (2)
        • 15-4. 스택과 큐 (2)
        • 15-5. 딕셔너리 해시테이블 (2)
        • 15-6. 트리와 그래프 (3)
      • 📊Algorithm (16)
        • BigO (2)
        • 정렬 (4)
        • 셔플 (2)
        • 탐색 (6)
        • 최적화 (1)
      • 📝Game Design (16)
      • 🤖​AI Tools (12)
        • AI 리뷰 분석 (6)
        • Player2 (0)
        • 3D 모델링 (1)
        • 2D 스프라이트 (0)
        • 이미지 (2)
        • 사운드 (1)
        • 동영상 (1)
        • 문서 (1)
      • 🌍Network (6)
      • 🌱Github (11)
        • 기본 개념 (7)
        • 명령어 (1)
        • 도구 활용 (1)
      • ⚙️Visual Studio (5)
        • 🔧설치 및 환경설정 (2)
        • ⌨️HotKey (1)
        • 🚨디버깅 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    자료형
    자료구조
    CodingTest
    메모리관리
    부트캠프
    디자인패턴
    csharp
    유니티
    GitHub
    unity
    문법
    기획
    객체지향
    게임기획
    OOP
    게임디자인
    algorithm
    gamedesign
    c#
    til
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
DevHoChan
Attribute ( 애트리뷰트 )
상단으로

티스토리툴바