Unity

[Unity] PropertyAttribute (인스펙터 정리)

usingsystem 2025. 1. 15. 12:18
728x90

Unity Inspector 속성(Attribute)은 스크립트의 변수와 동작을 Unity Editor에서 효율적으로 관리하게 

 

1. [AddComponentMenu]

  • 설명: AddComponent 메뉴에 스크립트를 추가하고 그룹화하여 관리.
  • 사용 예: 특정 스크립트를 카테고리화해 찾기 쉽게 만듦.
    효과: AddComponent 메뉴에 CustomScripts > MyCustomScript 경로로 표시.
[AddComponentMenu("CustomScripts/MyCustomScript")]
public class AddComponentMenuTest : MonoBehaviour { }

2. [ContextMenu] & [ContextMenuItem]

  • [ContextMenu] 설명: Inspector의 톱니바퀴 메뉴에 항목 추가.
  • [ContextMenuItem] 설명: 변수에 우클릭 메뉴 항목 추가.
  • 사용 예: 함수나 변수를 편리하게 초기화하거나 디버깅할 때 사용.
public class ContextMenuTest : MonoBehaviour {
    [ContextMenu("Do Something")]
    void DoSomething() { Debug.Log("Do Something 실행!"); }

    [ContextMenuItem("Reset String", "ResetTestString")]
    public string testString = "Hello";
    void ResetTestString() { testString = ""; }
}

3. [ExecuteInEditMode]

  • 설명: 게임 실행 상태가 아닌 편집 상태에서도 동작.
  • 사용 예: Inspector에서 값을 변경할 때, 즉시 결과를 반영.
[ExecuteInEditMode]
public class ExecuteInEditModeTest : MonoBehaviour {
    public float scale = 1.0f;

    void Update() {
        this.transform.localScale = new Vector3(scale, scale, scale);
    }
}

4. [Header]

  • 설명: 변수 그룹의 제목을 표시하여 가독성 향상.
  • 사용 예: 변수들을 카테고리별로 구분.
public class HeaderTest : MonoBehaviour {
    [Header("Health Settings")]
    public int maxHP;
    public int currentHP;

    [Header("Magic Settings")]
    public int maxMP;
    public int currentMP;
}

5. [HideInInspector]

  • 설명: public 변수지만 Inspector에서 숨김.
  • 사용 예: 디버깅용 변수나 노출이 불필요한 변수.
public class HideInInspectorTest : MonoBehaviour {
    public int visibleValue = 10;

    [HideInInspector]
    public int hiddenValue = 20;
}

6. [Multiline]

  • 설명: 여러 줄 문자열 입력창 생성.
  • 사용 예: 긴 문자열 입력이 필요한 경우.
public class MultilineTest : MonoBehaviour {
    [Multiline(5)]
    public string multilineText = "여러 줄 문자열 입력 가능";
}

7. [Range]

  • 설명: 슬라이더로 값 설정 및 범위 제한.
  • 사용 예: 값의 유효 범위를 제한.
public class RangeTest : MonoBehaviour {
    [Range(0, 10)]
    public int intRange;

    [Range(0.0f, 1.0f)]
    public float floatRange;
}

8. [RequireComponent]

  • 설명: 특정 컴포넌트를 강제로 추가.
  • 사용 예: 필요한 컴포넌트를 자동으로 추가하여 런타임 오류 방지.
[RequireComponent(typeof(Rigidbody))]
public class RequireComponentTest : MonoBehaviour { }

9. [SerializeField]

  • 설명: private 변수를 Inspector에 표시.
  • 사용 예: 외부 노출이 필요하지만 캡슐화를 유지할 때.
public class SerializeFieldTest : MonoBehaviour {
    [SerializeField]
    private int privateValue = 10;
}

10. [Space]

  • 설명: 변수 간 간격 추가.
  • 사용 예: 가독성을 위해 변수 간격 조정.
public class SpaceTest : MonoBehaviour {
    public int value1;

    [Space(20)] // 20픽셀 간격 추가
    public int value2;
}

11. [TextArea]

  • 설명: 다중 줄 입력창 생성 (최소/최대 크기 설정 가능).
  • 사용 예: 긴 텍스트를 입력하거나 설명을 기록할 때.
public class TextAreaTest : MonoBehaviour {
    [TextArea(3, 10)]
    public string largeText = "텍스트 입력 공간";
}

12. [Tooltip]

  • 설명: 변수에 마우스를 올리면 툴팁 표시.
  • 사용 예: 변수의 용도나 범위를 설명.
public class TooltipTest : MonoBehaviour {
    [Tooltip("이 값은 게임의 난이도를 결정합니다.")]
    public int difficultyLevel = 1;
}

13. [System.Serializable]

  • 설명: 클래스나 구조체를 직렬화하여 Inspector에 표시.
  • 사용 예: 구조체나 클래스를 Inspector에서 관리.
[System.Serializable]
public struct Stats {
    public int strength;
    public int agility;
}

public class SerializableTest : MonoBehaviour {
    public Stats playerStats;
}

14. [System.NonSerialized]

  • 설명: public 변수를 Inspector에서 숨김.
  • 사용 예: Inspector 표시가 필요 없는 경우.
public class NonSerializedTest : MonoBehaviour {
    public int visibleValue = 10;

    [System.NonSerialized]
    public int hiddenValue = 20;
}

15. [DisallowMultipleComponent]

  • 설명: 동일한 컴포넌트가 중복 추가되지 않도록 제한.
  • 사용 예: 단일 컴포넌트만 필요할 때.
[DisallowMultipleComponent]
public class SingleComponentTest : MonoBehaviour { }

 

 

 

 

참조 - https://shhouse.tistory.com/7?category=452932

728x90