1. Header (string)
인스펙터 내에 타이틀을 달 수 있는 속성이다.
모든 속성은 브래킷 [] 내에 함수처럼 서술하면 된다.
Header 속성을 사용하면 위 처럼 Header 속성을 기준으로 영역이 분할되고 타이틀이 달린다. 보기 깔끔하다.
2. Space (float)
필드 사이에 여백을 주는 속성이다.
플레이어 스탯 내에서도 부분별로 여백을 삽입해보았다.
깔끔하게 서로 떨어져 가독성이 향상되었음을 볼 수 있다.
3. Range (float, float)
변수의 값을 슬라이더 형식으로 표시하고, 최소 및 최대 값을 정해주는 속성이다.
물론 정수형 변수에도 적용된다.
다만 이는 인스펙터 내에서만 동작하며 스크립트를 이용해 변경시킬 경우 범위를 보장할 수 없다.
4. Multiline (int)
문자열을 작성하기 편하도록 라인의 수를 늘려주는 속성이다.
매개 변수의 값 만큼 라인의 수가 늘어나며 변수 이름 우측에 영역 박스가 생긴다.
5. TextArea (int, int)
Multiline과 마찬가지로 라인의 수를 늘려주는 속성이다.
Multiline과의 차이점은, 최소 크기와 최대 크기를 설정하는 것이며 변수 이름 우측이 아닌 아래에 영역 박스가 생긴다.
6. SerializeField
private 변수를 인스펙터에 표시하는 속성이다.
프로그래밍 경험이 좀 있는 사람이라면 알겠지만, 무분별하게 public으로 다 때려박는건 좋은 생각이 아니다.
언제나 필요한 것만 공개하고 외부에 공개될 필요가 없을 경우에는 private으로 유지하는 것이 바람직하다.
이 속성은 변수를 외부에 공개하지 않으면서 캐싱을 위해 인스펙터에 표시하고 싶은 경우 사용하기 좋다.
7. ToolTip (string)
해당 변수 위에 커서를 올릴 경우 나타나는 툴팁을 설정하는 속성이다.
공동 작업할 경우 혹은 라이브러리를 만들 경우 변수의 쓰임새가 이름만으로 표시하기엔 모호할 때 사용하기 좋다.
8. HideInInspector
SerializeField 와 반대로, public 필드를 인스펙터에서 숨기는 속성이다.
변수를 외부에 공개해야하나 굳이 인스펙터에서 값을 수정해줄 필요가 없을 경우 사용하기 용이하다.
9. System.Serializable
클래스 혹은 구조체를 인스펙터에 표시하는 속성이다.
여러 자료들을 하나의 클래스 혹은 구조체로 묶는 건 좋은 방법이다. 재사용 가능하기도 하고 깔끔해진다.
거기다가 인스펙터에 표시까지 된다면 안 만들 이유가 없다.
인스펙터에 클래스나 구조체가 표시될 땐 변수 왼편에 접고 펼 수 있는 삼각형 아이콘이 만들어진다.
펼치면 안에 있는 내용이 보여지며, 다시 접을 수 있다.
이제 불필요한 public들을 private으로 변경해주자. 스크립트 내에서 캐싱될 경우라면 인스펙터에 표시할 필요가 없다.
코드는 더 길어졌으나, 인스펙터는 매우 깔끔해졌음을 알 수 있다. 모르겠다면 이 글의 첫 인스펙터 사진과 비교해보면 된다.
인스펙터 정리는 끝났으니 좀 더 추가적으로 다른 속성을 살펴보자.
10. RequireComponenet (Type)
해당 컴포넌트를 추가할 때 속성의 Type에 해당하는 컴포넌트가 없을 경우에 자동으로 추가해준다.
11. AddComponentMenu (string)
해당 컴포넌트를 편리하게 추가할 수 있도록 영역을 지정해주는 속성이다.
위 사진 처럼 컴포넌트 메뉴도 그렇고, 인스펙터에서 Add Component 버튼을 이용해 추가하는 경우에도 마찬가지로 적용된다.
12. ContextMenu (string)
컴포넌트의 컨텍스트 메뉴에 함수를 추가해주는 속성이다.
원하는 함수 위에 속성을 작성하면 우측 사진 처럼 컴포넌트에서 우클릭을 할 경우 함수가 표시되며 누를경우 동작한다.
13. ContextMenuItem (string, string)
변수를 우클릭 했을 때 함수를 호출할 수 있는 버튼을 추가해주는 속성이다.
첫 인자가 버튼의 이름이며 두번째가 호출할 함수명이다. 매개 변수를 넣어줄 순 없는 모양이다.
델리게이트를 넘길 수 있었으면 좋았을 텐데. 아무래도 문자열로 함수를 넘기는건 기분이 나쁘다.
14. ExecuteInEditMode
스크립트 내에 있는 콜백 함수들을 실행 (Play) 이 아닌 수정 (Edit) 모드에서도 동작하도록 하는 속성이다.
위 코드는 Edit Mode에서 인스펙터로 Resize Amount를 수정하면 자동적으로 스케일이 조정되는 코드이다.
이런 속성을 사용할 땐 에디터 모드에서만 동작하도록 전처리기를 달아주는 것도 좋은 방법이다.
괜히 런타임 때 불필요하게 성능을 낭비할 필요는 없다.
글을 다 쓰고 보니까 resizeAmount가 오타나가 났다는 사실을 깨우쳤다. 귀찮으니 수정은 하지 않겠다.
6번과 7번도 원래 순서를 바꿔야하는데 귀찮아서 포기했다. 알아보기만 하면 됐지 뭘.
인스펙터 속성에 관한 자료는 아래 블로그에서 참조했다.
'◆Unity > Unity : 공부' 카테고리의 다른 글
Unity : 오브젝트 경계선 생성 오류 해결 방법 (Material 의 Alpah Clipping) (0) | 2023.10.30 |
---|---|
Unity : 유니티 이전 버전 다운받는 방법 (0) | 2023.05.06 |
Unity : 게임매니저 싱글톤 디자인패턴 (0) | 2023.05.04 |
Unity : 코루틴을 활용하여 증가하는 숫자 점수 만들기 (0) | 2023.04.23 |
Unity : 마우스로 클릭한 곳에 오브젝트 생성하기 (0) | 2023.03.22 |