Introduction to Components
트랜스폼

컴포넌트(Component) 사용하기

Components는 오브젝트(objects)와 동작(behaviours)에 관한 너트와 볼트로 볼 수 있습니다. 컴포넌트는 모든 GameObject 기능적인 조각들입니다. 만약 컴포넌트와 게임오브젝트의 관계가 아직 이해되지 않는다면, 다른 항목으로 가기 전에 GameObjects 페이지를 읽어 보십시오.

GameObject는 다양한 컴포넌트들에 대한 컨테이너입니다. 기본적으로, 모든 GameObject는 자동으로 Transform 컴포넌트가 포함되어 있습니다. 이것은 Transform 컴포넌트에 의해 GameObject가 어디에 위치하고 있는지, 얼마나 회전하고 있는지, 어느 정도의 크기인지 결정되기 때문입니다. Transform 컴포넌트가 없다면 GameObject는 월드에 있을 곳이 없어져 버립니다. 예를 들어, GameObject를 작성해 봅시다. 메뉴 항목 중에서 GameObject->Create Empty를 클릭하십시오. 새로운 GameObject를 선택하고 Inspector를 보십시오.

빈 게임 오브젝트에서도 트랜스폼 컴포넌트를 가지고 있습니다
빈 게임 오브젝트에서도 트랜스폼 컴포넌트를 가지고 있습니다

선택된 GameObject에 어떤 Component들이 연결되어 있는지를 언제든지 확인할 수 있는 수단으로서 인스펙터를 사용할 수 있다는 것을 명심합시다. Component의 증감에 따라 인스펙터는 그 때 무엇이 연결되어 있는지 항상 표시합니다. (스크립트를 포함한) 어떤 Component의 어떤 프로퍼티를 변경하는 데에도 인스펙터를 사용합니다.

컴포넌트 추가

선택하고 있는 GameObject에 대해, Components 메뉴에서 Component들을 추가할 수 있습니다. 막 생성한 빈 GameObject에 Rigidbody를 추가하여 지금부터 시도해 봅시다. 메뉴에서 Component->Physics->Rigidbody를 선택합니다. 이 작업을 수행했을 때, 인스펙터에 Rigidbody 등록 정보가 표시된 것을 눈치챌 것입니다. 빈 GameObject를 선택한 상태에서 Play 버튼을 눌러보면, 여러분은 살짝 놀랄 지도 모릅니다. 이 방법을 시도하여 빈 GameObject에 Rigidbody가 어떤 기능을 추가했는지 보세요. (GameObject가 가지고 있는 Component의 Y값이 줄어들기 시작합니다. 이것은 Unity의 물리 엔진에 의한 중력의 영향으로 GameObject가 낙하하기 때문입니다.)

Rigidbody 컴포넌트가 연결되어 있는 빈 GameObject
Rigidbody 컴포넌트가 연결되어 있는 빈 GameObject

또 다른 방법은 Component Browser(컴포넌트 브라우저)를 사용하는 것입니다. 이것은 오브젝트의 인스펙터에 있는 Add Component버튼으로 열 수 있습니다.

컴포넌트 브라우저
컴포넌트 브라우저

브라우저는 카테고리에 따라 컴포넌트의 선택을 편리하게 하며, 또한 이름을 이용하여 컴포넌트 검색범위를 좁힐 수 있는 검색상자도 있습니다.

하나의 GameObject에 대한 여러 Component들을 함께 연결할 수 있습니다. 일부 Component는 다른 것들과 결합하여 최상의 기능을 합니다. 예를 들어, Rigidbody는 Collider 중 하나와 함께 동작합니다. Rigidbody는 NVIDIA PhysX 물리 엔진을 통해 Transform을 관리하고, Collider는 Rigidbody를 다른 Collider와 충돌시켜 상호 작용을 일으킬 수 있도록 합니다.

특정 Component의 사용법에 대해 더 깊이 알고 싶은 경우, 관련 Component 레퍼런스 페이지에서 Component에 대해 읽을 수 있습니다. 또는 Unity의 인스펙터에서 Component의 상단에 있는 작은 ? 마크를 클릭해도 레퍼런스 페이지에 액세스할 수 있습니다.

컴포넌트 편집

Component의 장점 중 하나는 유연성이 있다는 것입니다. Component를 GameObject에 연결했을 때, Component 안의 개별 값이나 Properties(프로퍼티)가 표시됩니다. 그들은 게임을 빌드하는 동안이나 스크립트로 게임을 실행하는 동안 조정됩니다. 프로퍼티에는 주요한 두 가지 종류가 있습니다. 그것은 Values(값 형식)과 References(참조 형식)입니다.

아래 그림을 참조하십시오. 이것은 Audio Source 컴포넌트를 가진 빈 GameObject입니다. 인스펙터에 표시되는 Audio Source의 모든 값은 기본값입니다.

이 Component는 참조 형식 프로퍼티 1개와 값 형식 프로퍼티를 7개를 내포하고 있습니다. Audio Clip은 참조 형식 프로퍼티입니다. 이 Audio Source가 재생되기 시작했을 때, Audio Clip 프로퍼티에서 참조되는 오디오 파일의 재생을 시도합니다. 참조가 지정되지 않으면 재생용 음성이 하나도 없기 때문에 오류가 발생합니다. 인스펙터 안에서 파일을 참조해야 합니다. 참조는 프로젝트 뷰에서 음성 파일을 참조 형식 프로퍼티에 드래그하거나 오브젝트 선택기(Object Selector)를 사용하면 쉽게 할 수 있습니다.

Audio Clip 프로퍼티에 효과음 파일이 참조되어 있습니다
Audio Clip 프로퍼티에 효과음 파일이 참조되어 있습니다

컴포넌트는 어떤 다른 유형의 Component, GameObject, Asset에 대한 참조를 가질 수 있습니다. 프로퍼티 편집 페이지에서 참조의 할당에 대해 더 배울 수 있습니다.

Audio Clip의 나머지 프로퍼티는 모두 값 형식 프로퍼티입니다. 이들은 인스펙터에서 직접 조정할 수 있습니다. Audio Clip 값 형식 프로퍼티는 토글, 숫자, 드롭 다운 중 하나입니다. 그러나 값 형식 프로퍼티에는 텍스트 문자열, 색상, 곡선, 그 외의 종류가 있습니다. 이러한 프로퍼티의 유형과 값 형식 프로퍼티를 편집하려면 값 형식 프로퍼티 편집 페이지를 참조하십시오.

컴포넌트의 컨텍스트 메뉴 커맨드

컴포넌트의 컨텍스트 메뉴는 많은 유용한 명령을 가지고 있습니다.

컴포넌트의 컨텍스트 메뉴
컴포넌트의 컨텍스트 메뉴

인스펙터 안의 컴포넌트 패널 맨 오른쪽 상단에 있는 “톱니 바퀴” 아이콘으로도 동일한 명령들을 사용할 수 있습니다.

리셋(Reset)

이 명령은 가장 최근에 편집한 컴포넌트의 프로퍼티 값을 원래대로 되돌립니다.

삭제(Remove)

Remove Component 명령은 게임 오브젝트에 연결된 컴포넌트가 더 이상 필요하지 않은 경우에 사용할 수 있는 명령입니다. 컴포넌트끼리 서로 의존하고 있는 조합이 있다는 점에 유의하십시오. 예를 들어, HingeJointRigidbody도 연결되어 있는 경우에만 작용합니다. 만약 다른 컴포넌트에 의존하는 컴포넌트를 제거하려고 하면 경고 메시지가 표시됩니다.

위로 이동/아래로 이동(Move Up/down)

Image Effects 컴포넌트는 각각 그려진 외형에 대해 특정 시각 효과를 적용합니다. 그러나 효과를 적용하는 순서가 중요합니다. 컨텍스트 메뉴에는 위로 이동(Move Up) 및 아래로 이동(Move Down)이 있습니다.

복사/붙여넣기(Copy/Paste)

Copy Component 명령은 컴포넌트의 해당 타입과 현재 프로퍼티 설정을 저장합니다. 이들은 Paste Component Values를 이용하여 타입이 일치하는 다른 컴포넌트에 붙여넣을 수 있습니다. 또한 Paste Component As New를 이용하면 오브젝트에 대해 복사한 값으로 새로운 컴포넌트를 만들 수 있습니다.

프로퍼티 테스트하기

게임이 Play Mode(플레이 모드)인 동안은 어떤 게임 오브젝트의 프로퍼티라도 인스펙터에서 자유롭게 변경할 수 있습니다. 예를 들어, 다른 높이의 점프를 시도해보고 싶어질 지도 모릅니다. 만약 Jump Height라는 프로퍼티를 스크립트에서 만들고 있다면 플레이 모드를 시작하여 값을 변경하고, 무엇이 일어나는지를 보기 위해 점프 버튼을 눌러봅시다. 그 플레이 모드를 멈추지 않고 다시 값을 변경하여 잠깐 사이에 결과를 확인할 수 있습니다. 플레이 모드를 중지하는 경우, 프로퍼티는 플레이 모드가 시작되기 전의 값으로 돌아갑니다. 그러니까, 작업 내용을 잃지 않고 끝납니다. 이 워크 플로우는 실험과 조정, 여러 번 반복 등으로 시간을 낭비하지 않고 게임 내용을 수정하는 것에 대해 중대한 도움이 됩니다. 게임 모드 중 하나의 프로퍼티에 시도해 보십시오.

Introduction to Components
트랜스폼