DevDino

[Unity 기술면접] GameObject와 Component의 관계 본문

Unity/기술면접

[Unity 기술면접] GameObject와 Component의 관계

데브다이노 2025. 12. 15. 15:35

"GameObject와 Component는 각각 무엇이며, 어떤 관계를 가지나요?"

GameObject와 Component

Unity의 아키텍처를 이해하기 위해 가장 먼저 알아야 할 핵심 개념입니다.

GameObject는 컨테이너이고 Component는 기능입니다.

 

GameObject

  • 정의: 유니티 씬(Scene)에 존재하는 모든 객체의 기본 단위이자, 기능들을 담는 컨테이너(Container) 역할을 합니다.
  • 특징: 스스로는 아무런 동작도 하지 못하는 빈 껍데기입니다. 하지만 위치, 회전, 크기 정보를 담는 Transform Component만큼은 무조건 기본적으로 1개 포함하고 있습니다.

 

Component

  • 정의: 객체가 실제로 어떤 행동을 하고 어떤 데이터를 가질지 결정하는 실제 기능 단위입니다.
  • 특징: 물리 효과를 주는 Rigidbody, 화면에 모델을 렌더링하는 MeshRenderer, 그리고 개발자가 직접 작성하여 객체의 동작을 제어하는 C# 스크립트 모두가 컴포넌트입니다.

 

두 객체의 관계: 컴포지션(Composition) 중심의 설계

이 둘의 관계는 유니티가 '상속(Inheritance)'이 아닌 '컴포지션(Composition)' 중심으로 설계되었음을 가장 잘 보여줍니다.

 

예를 들어, 전통적인 객체지향의 상속 구조면 Character라는 부모 클래스를 만들고, 이를 상속받아 PlayerMonster 클래스를 각각 분리하여 구현해야 합니다. 이 방식은 기능이 추가되고 상속 깊이가 깊어질수록 구조가 복잡해지고 코드가 경직되는 단점이 있습니다.


하지만 유니티 컴포지션 구조에서는 빈 GameObject를 하나 생성한 뒤, 필요한 컴포넌트를 레고 블록처럼 조립하여 개체를 완성합니다.


이처럼 GameObject에 Component라는 기능 블록을 끼워 맞추는 구조는, 코드의 중복을 줄이고 기획 변경에 매우 유연하게 대처할 수 있게 해주는 유니티의 핵심 철학입니다.