코드로 컴포넌트 정리_꾸미기(1)

[Header(" ")]
// Inspector 창에서 변수를 보기 쉽게 구성하기 위한 어트리뷰트
스크립트의 멤버 변수를 그룹화하거나 구분선을 추가할 때 사용
[Tooltip(" ")]
// 변수에 대한 간단한 설명이나 정보를 제공하기 위해 사용
[Range(min, max)]
// 변수의 값을 슬라이더로 조정하는 역활을 수행
코드로 컴포넌트 정리_꾸미기(2)

[CustomEditor(typeof(LayoutComponent))]
// Unity Editor에 특정 타입(LayoutComponent)의 커스텀 에디터를 정의한다고 명시
// Unity가 LayoutComponent 컴포넌트를 선택했을 때, 이 커스텀 에디터를 Inspector에 표시
public class LayoutCompEditor : Editor
// LayoutCompEditor는 LayoutComponent의 Inspector를 커스터마이징.
private SerializedProperty data1,2,3,4Property
- SerializedProperty
// Unity의 직렬화된 변수(스크립트의 public 또는 [SerializeField]로 선언된 변수)를 참조
Inspector 창에 표시되는 변수들을 조작할 때 사용
data1, data2, data3, data4)을 참조
private bool foldState = false;
// foldState라는 이름의 bool(Boolean) 타입 변수를 정의하며, 초기값을 false로 설정
private void OnEnable()
// Unity 에디터에서 이 커스텀 에디터가 활성화될 때 호출
serializedObject.FindProperty("dataX")
- serializedObject
// 현재 에디터가 참조하고 있는 대상 컴포넌트(LayoutComponent)를 직렬화된 형태로 나타낸 객체
- FindProperty("변수명")
// LayoutComponent 클래스 내의 변수(data1, data2, data3, data4)를 찾음

public override void OnInspectorGUI()
- OnInspectorGUI()
// Unity Editor의 Inspector 창에 표시되는 UI를 정의하는 함수
** override 를 사용했기 때문에, Unity의 기본 Inspector 대신, 개발자가 직접 설계한 UI를 표시할 수 있음.
serializedObject.Update();
// 현재 선택된 MyComponent의 데이터를 Unity의 직렬화 시스템에서 가져와 업데이트를 실행.
foldState = EditorGUILayout.Foldout(foldState, "Layout")
// Layout 이라는 제목을 가진 접히는(Foldout) UI 요소를 생성
// foldState는 해당 접힘 상태를 나타내는 불리언 변수. true이면 펼쳐져 있고, false이면 접힌 상태.
** 이 코드에서 사용자가 "Layout"을 클릭하면 접힘 상태가 foldState에 저장되고
이 값에 따라 아래의 UI 요소들이 보여지거나 숨겨짐.
if (foldState)
// foldState 가 true 면, 하기의 코드를 실행.
EditorGUI.indentLevel++;
// UI의 들여쓰기 레벨을 1 증가
이 아래의 UI 요소들은 왼쪽에서 한 칸 들여쓰기된 형태로 표시
EditorGUILayout.PropertyField(data1Property)
// data1Property 변수의 SerializedProperty를 Inspector에 표시
data2Property.stringValue = EditorGUILayout.TextField("Data 2", data2Property.stringValue)
// data2Property의 문자열 값을 텍스트 필드로 표시하고, 사용자가 입력한 값을 stringValue에 업데이트
- Data 2 :
이 텍스트 필드 옆에 표시될 레이블
- data2Property.stringValue :
data2Property가 가리키는 string 값. 사용자가 이 필드를 수정하면 그 값이 바로 업데이트
EditorGUILayout.PropertyField(data3Property)
// data3Property 변수의 SerializedProperty를 Inspector에 표시
EditorGUI.indentLevel++;
// UI의 들여쓰기 레벨을 1 증가
이 아래의 UI 요소들은 왼쪽에서 한 칸 들여쓰기된 형태로 표시
EditorGUILayout.PropertyField(data4Property);
// data4Property 변수의 SerializedProperty를 Inspector에 표시
EditorGUI.indentLevel--;
// 들여쓰기를 다시 원래 상태로 되돌림.
EditorGUI.indentLevel--;
// 들여쓰기를 다시 원래 상태로 되돌림.
serializedObject.ApplyModifiedProperties();
// Inspector에서 수정된 값들을 직렬화된 객체에 반영하여, 객체 내에서 변경된 값을 저장
** Update()는 값을 동기화하지만, 실제로 값이 객체에 반영되려면
ApplyModifiedProperties()를 호출해야 함.
그렇지 않으면 값이 수정된 것처럼 보이지만 실제 객체에는 반영되지 않음.
'게임 개발(유니티) > 멋쟁이 사자처럼 3기_회고록' 카테고리의 다른 글
| [멋쟁이사자처럼 유니티 TIL] 2024_12_05(목) 강의 요약 및 정리(2) (0) | 2024.12.08 |
|---|---|
| [멋쟁이사자처럼 유니티 TIL] 2024_12_05(목) 강의 요약 및 정리(1) (0) | 2024.12.05 |
| [멋쟁이사자처럼 유니티 TIL] 2024_12_04(수) 강의 요약 및 정리(2) (0) | 2024.12.04 |
| [멋쟁이사자처럼 유니티 TIL] 2024_12_04(수) 강의 요약 및 정리(1) (0) | 2024.12.04 |
| [멋쟁이사자처럼 유니티 TIL] 2024_12_03(화) 강의 요약 및 정리(2)_단일 링크 리스트 (0) | 2024.12.03 |