오르카의 아틀리에

*너무 포스팅을 안 해서 느끼는 죄책감에 작성하는 포스팅

 

최근 팬 게임을 본격적으로 만들기 시작했다. 보너스 받은 걸로 와콤 액정 태블릿도 구입해서 진행 중인데, 아직은 시스템을 제작하고 있는 상황이다...

 

기반을 닦고 있다 보니 나중에 아트 + 세팅 작업에 필요한 도구들을 만들거나, 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용 주석