| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- Toy Project
- Unity
- BOJ
- 독서
- System Programming
- multi-thread
- C++
- Network Programming
- git
- PS
- c#
- Online Judge
- Data Structure
- Today
- Total
I'm FanJae.
[20260520] Unity ( Unity의 기본 개념 ) 본문
1. Unity의 기본 개념
1) Unity는 Component 기반 구조다.
- Unity는 객체의 기능을 상속 구조로 구성하기보다, Component 기반 구조를 사용한다.
- 상속 중심으로 설계할 때, 아래와 같은 문제가 발생할 수 있다.
Human
├─ Player
└─ NPC
- 예를 들어, Human 이라는 최상위 클래스에 체력, 물리, 애니메이션, 렌더링, 조작 기능을 모두 넣었다고 가정한다.
- 그러면, Player 는 조작 기능이 필요하지만, NPC는 ‘조작 기능’이 필요하지 않다.
- 이처럼, 부모 클래스에 기능을 많이 넣을수록 자식 클래스가 필요하지 않은 기능까지 상속받는 문제가 생긴다.
- 즉, Unity는 기능을 거대한 부모 클래스에 몰아넣고 상속받는 방식이 아닌 필요한 기능을 Component 단위로 나누고 GameObject에 조립하는 방식을 사용한다.
2) GameObject
- Unity 안에서 GameObject 라는 것은 월드에 존재하는 하나의 물체를 의미한다.
- 즉, Unity에서 GameObject라는 것은 Scene안에 존재하는 기본 단위라고 할 수 있다.

- Unity에서 프로젝트를 생성하면 만들어지는 Camera, Directional Light, Global Volume 등등과 같은 모든 것이 GameObject다.
- GameObject 자체는 구체적인 동작을 직접 정의하지 않고, 여러 Component를 담는 컨테이너 역할을 한다.
3) Component 패턴
- Component는 GameObject에서 특정 기능을 제공하는 부품과 같다.
Transform → 위치, 회전 크기
Camera → 화면 렌더링
Light → 빛
Rigidbody → 물리 효과
Colider → 충돌 판정
AudioSource → 소리 재생
Script → 개발자가 직접 작성한 동작
- 즉, GameObject는 빈 껍데기이고, 실제 기능은 Component를 붙여서 만든다.
① 예시
- 우리가 C#에서 일반적인 클래스로 상속을 이용해 Player를 만들었다면 이렇게 생각할 수 있다.
class Player : Human
{
// private int Hp;
// ~~~ Move(); // 이동
// ~~~ Attack(); // 어택
// Animation(); // 애니메이션
}
- 하지만 Unity에서는 보통 이런식으로 구성한다.
Player (GameObject)
├─ Transform
├─ Rigidbody
├─ Collider
├─ Animator
├─ PlayerController Script
└─ Health Script
Monster GameObject
├─ Transform
├─ Rigidbody
├─ Collider
├─ Animator
├─ MonsterAI Script
└─ Health Script
- 몬스터의 경우 몬스터가 필요한 Component만 다르게 붙여주면 된다.
- 이렇게 하면, Player와 Monster가 반드시 같은 부모 클래스를 공유하지 않아도 된다. 즉, 공통 기능이라는 이유만으로 부모 클래스에 몰아 넣지 말고, 붙였다 뗄 수 있는 기능은 Component로 분리해두고, 필요한 GameObject에만 붙여서 재사용하는 방식이다.
② Component 구조를 사용하는 이유
- Component 구조의 핵심 장점은 필요한 기능만 조립할 수 있다는 점이다.
- 상속 구조에서는 부모 클래스가 비대해지기 쉽지만, Component 구조에서는 기능을 작게 나누고, 필요한 GameObject에만 붙일 수 있다.
- 예를 들어, NPC에게 조작 기능이 필요없다면, 이동 관련 기능(PlayerController Component)를 붙이지 않으면 된다.
③ 주의 사항
- Component 구조가 상속을 완전히 대체하는 것은 아니다.
- Unity에서도 C# 클래스 상속은 사용이 가능하다. 하지만, GameObject 기능을 설계할 때는 역할별 Component로 나누는 방식이 더 자연스럽다.
- 또한 Component를 너무 잘게 나누면 오히려 구조 파악이 어려워진다. 따라서 기능 단위는 적절히 나누는 것이 중요하다.
'Unity > Unity 초격차캠프' 카테고리의 다른 글
| [20260520] Unity ( Unity의 Editor 조작 ) (0) | 2026.05.20 |
|---|---|
| [20260520] Unity ( Unity Editor 기본 ) (0) | 2026.05.20 |
| [20260519] C# 정리 ( 확장 메서드 ) (0) | 2026.05.19 |
| [20260519] C# 정리 ( LINQ ) (0) | 2026.05.19 |
| [20260519] C# 정리 ( Lambda Expression ) (0) | 2026.05.19 |