I'm FanJae.

[20260520] Unity ( 기본 GameObject와 Component ) 본문

Unity/Unity 초격차캠프

[20260520] Unity ( 기본 GameObject와 Component )

FanJae 2026. 5. 20. 19:29

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 창에 다음과 같이 뜬다.


 

 
Comments