컴포넌트 ( Component )
컴포넌트 ( Component ) 는 유니티에서 GameObject 에 기능을 부여하는 스크립트나 요소를 말한다.
GameObject 는 껍데기 ( 오브젝트 ) 이고 , 컴포넌트는 그 오브젝트의 능력이나 속성을 부여한다.
예시로 자동차를 만든다고 가정해보자
- GameObject : 자동차
- Transform : 위치와 회전 , 크기
- Rigidbody : 물리 효과 ( 중력 , 질량 등 )
- Collider : 충돌 감지
- AudioSource : 소리 재생
- Script ( MonoBehaviour ) : 움직이는 로직
이렇게 여러 컴포넌트가 합쳐져서 하나의 오브젝트가 완성된다.

작동 원리
모든 GameObject 는 기본적으로 Transform 컴포넌트를 가지고 있다.
나머지는 개발자가 추가 ( Add Component ) 하거나 제거 ( Remove Component ) 해서 조합이 가능하다.
스크립트도 결국은 직접 만든 사용자 정의 컴포넌트이다.
using UnityEngine;
public class PlayerMove : MonoBehaviour
{
void Update()
{
transform.Translate(Vector3.forward * Time.deltaTime);
}
}
위 코드에서 PlayerMove 스크립트는 MonoBehaviour 를 상속받은 사용자 정의 컴포넌트이다.
이걸 GameObject 에 붙이면 움직일 수 있는 오브젝트가 된다.
대표적인 컴포넌트
| 컴포넌트 | 역할 |
| Transform | 위치 , 회전 , 크기 제어 ( 모든 오브젝트 기본 포함 ) |
| Rigidbody | 물리 시뮬레이션 ( 중력 , 속도 , 질량 등 ) |
| Collider | 충돌 감지 ( BoxCollider , SphereCollider 등 ) |
| AudioSource | 소리 재생 |
| Camera | 화면에 보여주는 역할 |
| Light | 빛 조명 제어 |
| Script ( C# ) | 직접 작성한 로직을 실행시키는 사용자 정의 컴포넌트 |
코드로 컴포넌트 제어
▼컴포넌트 가져오기
Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>(); // 같은 GameObject의 Rigidbody 가져오기
}
▼컴포넌트 추가
gameObject.AddComponent<AudioSource>(); // 오디오 소스 추가
▼컴포넌트 제거
Destroy(GetComponent<AudioSource>()); // 오디오 소스 제거
주의할 점
GetComponent<T>( ) 는 성능상 자주 호출하면 비효율적이다. start( )에서 한 번만 캐싱하는게 좋다.
컴포넌트 간의 의존 관계가 있을 때는 순서나 존재 여부를 잘 확인해야 한다.
( 예시 : Rigidbody 가 없는데 Force 를 적용하려고 하면 에러 발생 )
정리
컴포넌트는 GameObject의 기능을 담당하는 부품이다.
여러 컴포넌트의 조합으로 오브젝트의 행동과 특성이 결정된다.
참고 자료
https://docs.unity3d.com/kr/530/Manual/UsingComponents.html
'🧊Unity Basic > 게임오브젝트' 카테고리의 다른 글
| 오브젝트 실습 (0) | 2025.10.24 |
|---|---|
| 생성과 파괴 ( Instantiation & Destruction ) (0) | 2025.10.14 |
| 오브젝트 ( GameObject ) (0) | 2025.10.14 |