| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- git
- Data Structure
- Unity
- C++
- Toy Project
- Network Programming
- Online Judge
- PS
- c#
- System Programming
- 독서
- multi-thread
- BOJ
- Today
- Total
I'm FanJae.
[20260520] Unity ( 기본 GameObject와 Component ) 본문
1. 기본 GameObject와 Component
1) 3D Object 생성
- Unity에서는 Hierarchy 창에서 마우스 오른쪽 버튼을 누르거나, 상단 메뉴의 GameObject > 3D Object를 통해 3D 오브젝트를 생성할 수 있다.

- 대표적인 3D Object는 아래와 같다.
Cube → 정육면체
Sphere → 구
Capsule → 캡슐 형태
Cylinder → 원기둥
Plane → 평면
2) 3D Object의 기본 Component
- Unity에서 3D Object를 생성하면 기본적으로 필요한 Component들이 함께 추가된다.
- 예를 들어 Cube를 생성하면 다음과 같은 Component가 포함된다.
Cube
├─ Transform
├─ Mesh Filter
├─ Mesh Renderer
└─ Box Collider
- 각 Component의 역할은 다음과 같다.
Transform → 위치, 회전, 크기 관리
Mesh Filter → 오브젝트의 메시 데이터 참조
Mesh Renderer → 메시를 화면에 렌더링
Box Collider → 충돌 영역 처리
- Component 옆의 체크 박스를 해제하면 해당 Component를 비활성화할 수 있다.

3) Transform Component
- 모든 GameObject는 Transform Component를 반드시 가져야 한다.
- Transform 은 GameObject의 위치, 회전 크기를 관리하는 Component다.
Position → 위치
Rotation → 회전
Scale → 크기
- Transform은 GameObject의 기본 정보에 해당하기 때문에 삭제할 수 없다.
- 즉, Unity에서 GameObject가 Scene에 존재하려면 최소한 위치, 회전, 크기 정보가 필요하고, 이 정보를 담당하는 것이 Transform이다.
① 부모-자식 관계
- Unity에서는 GameObject 사이에 부모-자식 관계를 만들 수 있다.
- Hierarchy에서 한 GameObject를 다른 GameObject 아래로 드래그하면 자식 오브젝트가 된다.
Cube
└─ Sphere
- 이 경우 Cube가 부모이고, Sphere가 자식이다.
- 부모 GameObject를 이동하면 자식 GameObject도 함께 이동한다.
- 하지만 자식의 Transform 값은 부모를 기준으로 표시된다. 즉, 자식은 World 전체가 아니라 부모의 위치를 기준으로 자신의 위치를 가리킨다.
부모의 이동 → 자식도 함께 이동
자식 Transform → 부모 기준 Local 값
4) Script 생성
- Unity에서 직접 기능을 만들고 싶다면 Script를 생성해야 한다.
- 보통 Assets 폴더 안에 Scripts 폴더를 만든 뒤, 그 안에서 Script를 생성한다.
Assets
└─ Scripts

- Script를 생성한 뒤 적절히 이름을 변경해 열어보면, 기본 코드가 작성되어 있다..
using UnityEngine;
public class UnityBasic : MonoBehaviour
{
void Start()
{
}
void Update()
{
}
}
- 여기서 Start() 와 Update() 는 Unity가 기본으로 제공하는 이벤트 메서드다.
Start() → Script가 처음 실행 될 때 한 번 호출한다.
Update() → 매 프레임마다 반복 호출한다.
5) MonoBehaviour
- MonoBehaviour는 Unity에서 Script를 Component로 사용하기 위해 상속받는 기본 클래스다.
- Unity에서 직접 만든 Script를 GameObject에 붙이려면 보통 MonoBehaviour를 상속해야 한다.
using UnityEngine;
public class UnityBasic : MonoBehaviour
{
void Start()
{
}
void Update()
{
}
}
- 위 코드에서 UnityBasic 클래스는 MonoBehaviour를 상속하고 있다.
public class UnityBasic : MonoBehaviour
- 이렇게 MonoBehaviour를 상속한 Script는 GameObject에 붙일 수 있는 사용자 정의 Component가 된다.
① 유의할 점
(1) C# 클래스를 만들었다고 해서 무조건 Unity의 제어를 받는 것은 아니다.
public Class MyClass
{
}
- 위 클래스는 일반 C# 클래스다. GameObject에 Component로 붙일 수도 없고, Unity 생명 주기 메서드도 호출되지 않는다. 하지만 모든 클래스를 MonoBehaviour로 만들 필요는 없다. 예를 들어 단순히 데이터를 표현하는 클래스는 일반 C# 클래스로 만드는 것이 더 적절하다.
(2) 사용하지 않는 이벤트 메서드는 제거하는 것이 좋다.
- Start()와 Update()는 Unity가 제공하는 생명 주기 메서드다.
public class UnityBasic : MonoBehaviour
{
void Start()
{
}
void Update()
{
}
}
- 내부에 아무 코드도 작성하지 않을 경우, 굳이 남겨둘 필요가 없다.
- 특히 Update()는 매 프레임마다 호출되는 메서드이기 때문에, 사용하지 않는다면 삭제하는 것이 좋다.
6) Script를 GameObject에 추가하는 방법
① 사용 예시
- 생성한 Script는 GameObject에 Component로 추가해서 사용할 수 있다.
- 이때 방법은 크게 두 가지가 있다.
1. Script 파일을 GameObject에 드래그 앤 드롭
2. Inspector의 Add Component 버튼을 통해 직접 추가

- Script를 GameObject에 추가하면, 해당 Script는 그 GameObject의 Component가 된다.
7) Debug.Log
- Debug.Log()는 Unity Console 창에 로그를 출력할 때 사용한다.
- Script가 정상적으로 실행되는지 확인하거나, 특정 값이 어떻게 변하는지 확인할 때 자주 사용한다.
using UnityEngine;
public class UnityBasic : MonoBehaviour
{
void Start()
{
Debug.Log("Start");
}
}

- 이와 같이 적용하면, Console 창에 다음과 같이 뜬다.

'Unity > Unity 초격차캠프' 카테고리의 다른 글
| [20260520] Unity ( Unity의 LifeCycle ) (0) | 2026.05.20 |
|---|---|
| [20260520] Unity ( transform과 gameObject ) (0) | 2026.05.20 |
| [20260520] Unity ( Unity의 Editor 조작 ) (0) | 2026.05.20 |
| [20260520] Unity ( Unity Editor 기본 ) (0) | 2026.05.20 |
| [20260520] Unity ( Unity의 기본 개념 ) (0) | 2026.05.20 |