*너무 포스팅을 안 해서 느끼는 죄책감에 작성하는 포스팅
최근 팬 게임을 본격적으로 만들기 시작했다. 보너스 받은 걸로 와콤 액정 태블릿도 구입해서 진행 중인데, 아직은 시스템을 제작하고 있는 상황이다...
기반을 닦고 있다 보니 나중에 아트 + 세팅 작업에 필요한 도구들을 만들거나, Component에 박혀있는 변수들을 정리하는 일이 많다. 옛날부터 몇몇 유용한 Attribute들을 이용하여 작업했었는데 오랜만에 기반 작업에 들어간 거라 거진 다 까먹었다. 그래서 리마인드를 위한 정리 포스팅을 진행해본다. (철저하게 개인적으로 사용하는 용도로 정리, 다른 사람은 어떻게 사용하는지 모릅니다 >__<)
0. CreateAssetMenu
주로 스크립터블 오브젝트(Scriptable Object)를 작성하고 에셋을 찍어내기 위해 사용한다.
1. ContextMenu
컴포넌트에서 해당 함수를 임의로 실행하고 싶을 때 사용한다. 보통 셋업을 하는 메소들을 제작해둬서 사용하는데 유용하다. 혹은, 실행 중 디버깅용/상황 재현용으로 사용한다. (플레이 모드에 상관없이 실행시킬 수 있다는 장점이 있다.)
2. MenuItem
ContextMenu와 비슷한 기능을 Menu Bar에 올릴 수 있다. 하지만 Static function이어야 한다.
3. RequireComponent
함께 필요한 다른 컴포넌트가 자동으로 추가된다. 보통 해당 컴포넌트에서 해당 게임 오브젝트의 다른 컴포넌트를 GetComponent로 가져오지만 null이면 안될 때 사용합니다. 일종의 실수 방지 목적으로 사용한다.
4. Serializable
커스텀 클래스를 제작하고 MonoBehaviour에 멤버로 작성한 뒤 인스펙터에서 편집하고 싶을 때 사용. 커스텀하게 작성한 클래스를 직렬 화할 수 있어야 편집할 수 있음.
5. SerializeField
private필드를 강제로 serialize 한다. private 필드를 inspector에서도 편집이 가능하게 만들고 싶을 때 사용한다. (하지만 유니티에서 SerializeField를 사용한 private 필드보다는 public이 성능상 이점이 있다고 이야기한 걸 주워들은 것 같다.)
6. Header
Inspector에 보이는 변수 묶음에 텍스트를 써서 필드의 Context를 알릴 수 있다. 보통 Component에서 사용하는 멤버들을 정리할 때 사용함.
7. Space
Inspector에 보이는 변수 묶음에 텍스트를 써서 필드의 Context를 알릴 수 있다. 보통 Component에서 사용하는 멤버들을 정리할 때 사용함.
8. Range
Inspector에서 값을 변경할 때 슬라이드 바를 이용할 수 있도록 만듦. 이름처럼 변수의 범위를 지정할 수 있어서 유용하게 사용할 수 있음.
9. Tooltip
에디터에 디테일을 더하고 싶을 때 사용. 변수에 대한 자세한 설명을 달 수 있어 3일 뒤의 자신이나 다른 기획, 아트가 이 컴포넌트를 사용하고 세팅해야 할 때 설정해줌.
정리
Name |
설명 |
tip |
CreateAssetMenu |
Assets > Create에 메뉴 추가 |
ScriptableObject Asset 생성에 유용 |
ContextMenu |
컴포넌트 설정에 메뉴 추가 |
임의의 함수 실행에 유용(non-static) |
MenuItem |
메뉴바에 메뉴 추가 |
임의의 함수 실행에 유용(static) |
RequireComponent | 꼭 같이 붙어있어야하는 컴포넌트 추가 |
GetComponent에서 Null 검사하기 싫다면... |
Serializable |
커스텀한 클래스를 Inspecter에 표시 |
|
SerializeField | private 한 맴버를 Inspecter에 표시 |
|
Header |
멤버의 카테고리를 분류 가능 |
|
Space |
Inspecter에서 멤버와 멤버 사이 간격 주기 |
Inspecter 정리용 |
Range |
Inspecter에서 변수 세팅에 범위를 줌 |
실수 방지 |
Tooltip |
멤버에 대한 디테일한 설명 |
Inspecter용 주석 |