Attribute

  • 어트리뷰트(Attribute)는 C# 프로그래밍 언어에서 특정한 선언(클래스, 필드, 메서드 등)에 대해 추가 정보를 제공하는데 사용
  • 실행 시간(Runtime)이나 컴파일 시간에 특정 작업을 수행하는 데 사용할 수 있음
  • 즉, 어트리뷰트는 선언에 대한 메타데이터를 제공합니다.

사용용도

  • 직렬화 제어: [SerializeField]와 같은 어트리뷰트를 사용하여 private 필드를 인스펙터에 노출
  • 인스펙터 사용자 인터페이스(UI) 커스터마이징: [Range(0, 10)]과 같은 어트리뷰트를 사용하여 인스펙터에서 필드에 대한 슬라이더를 생성
  • 코드 실행의 조건이나 요구사항 정의: [RequireComponent(typeof(Rigidbody))] 어트리뷰트를 사용하여 특정 컴포넌트가 게임 오브젝트에 추가되어 있어야 함을 명시
Attribute Notice
SerializeField private, pritected 변수를 Inspector View에 노출
Serializable Custom Class를 Inspector View 노출
Header 변수위에 타이틀을 설정해 카테고리 분류 가능
Inspector View 정리
HideInInspector public 변수를 Inspector에서 숨길 수 있음
RequireComponent 필수 컴포넌트를 추가 할 수 있음
Range Int, float 변수를 슬라이드바로 표시하고 범위를 제한
Space 변수와 변수사이에 간격
CreateAssetMenu ScriptableObject Asset을 생성할때 사용하는 메뉴를 추가 할 때 사용
MenuItem 임의의 함수 ( static ) 실행을 메뉴 항목으로 추가
ContextMenu 임의의 함수 ( non-static ) 실행을 컴포넌트 톱니 메뉴에 추가
AddComponentMenu 인스펙터의 AddComponent 메뉴 항목으로 컴포넌트를 추가 할때 사용
ExecuteInEditMode 에디터가 플레이 모드가 아니더라도 컴포넌트가 동작하도록 할때 사용
Multiline string 변수를 여러줄 입력 가능하게 만들때 사용
TextArea Multiline과 비슷, 폭에 맞춰 자동으로 줄바꿈과 슬라이드바 표시
Tooltip 인스펙터에 표시되는 변수에 설명을 추가 할때 사용
[Serializable]
public class MyClass
{
    [SerializeField]
    private int myInt;
}