
Unity에서의 객체? 클래스? 생성자?
Unity와 같은 객체지향 프로그래밍 환경에서는 "객체(Object)"와 "클래스(Class)"는 핵심적인 개념입니다. 이 글에서는 객체란 무엇이며, 클래스와 어떤 관계를 가지는지, 그리고 Unity에서 이 개념들이 어떻게 사용되는지를 설명합니다.
객체(Object)란?
객체는 속성과 기능을 가진 독립적인 존재입니다. Unity에서는 게임 내에서 보이는 캐릭터, 적, 총알, 배경 등 모든 것들이 객체라고 볼 수 있습니다.
객체는 다음과 같은 특징을 가집니다:
- 상태(State): 예를 들어 적 캐릭터는 체력, 위치, 속도 등의 정보를 가질 수 있습니다.
- 행동(Behavior): 예를 들어 움직인다, 공격한다, 사라진다 등의 메서드(함수)를 통해 특정 행동을 수행할 수 있습니다.
클래스(Class)란?
클래스는 객체를 만들기 위한 설계도입니다. 실제로 Unity에서 스크립트를 만들 때 작성하는 C# 코드 파일은 클래스 정의입니다.
예를 들어 다음과 같은 Enemy 클래스가 있다고 가정해 봅시다:
public class Enemy : MonoBehaviour
{
public int health = 100;
public void TakeDamage(int damage)
{
health -= damage;
}
}
이 클래스는 체력을 저장하고, 데미지를 입는 기능을 가진 적(Enemy) 객체의 설계도입니다. 게임 중에는 이 클래스를 기반으로 여러 개의 Enemy 객체가 생성됩니다.
생성자(Constructor)란?
생성자는 클래스를 통해 객체를 생성할 때 호출되는 특별한 메서드입니다. Unity에서 MonoBehaviour를 상속받은 클래스에서는 생성자 대신 Awake()나 Start() 메서드를 주로 사용하지만, 일반 클래스에서는 생성자를 명시적으로 정의할 수 있습니다.
public class Weapon
{
public string name;
public int damage;
public Weapon(string name, int damage)
{
this.name = name;
this.damage = damage;
}
}
이런 식으로 Weapon이라는 클래스의 객체를 생성할 때, 이름과 데미지를 지정할 수 있습니다:
Weapon sword = new Weapon("Sword", 25);
이처럼 생성자는 객체가 생성될 때 필요한 초기화 작업을 수행하는 데 사용됩니다.
Unity에서 객체의 예시
Unity에서는 GameObject를 기반으로 모든 게임 요소가 구성됩니다. 여기에 스크립트를 컴포넌트로 붙이는 방식으로 다양한 동작을 부여합니다.
public class PlayerController : MonoBehaviour
{
void Start()
{
Debug.Log("플레이어가 생성되었습니다.");
}
}
이 PlayerController 클래스는 Unity에서 특정 GameObject에 부착되어 그 객체의 동작을 정의하게 됩니다. Unity 내부에서는 GameObject + 컴포넌트들의 조합이 곧 하나의 "객체"라고 볼 수 있습니다.
요약
- 객체는 상태와 행동을 가진 독립된 존재입니다.
- 클래스는 객체를 만들기 위한 설계도입니다.
- Unity에서는 클래스(스크립트)를 통해 GameObject에 동작을 부여합니다.
- 생성자(Constructor)는 일반 클래스에서 객체 생성 시 초기화를 담당합니다.
- MonoBehaviour를 상속받은 클래스는 생성자 대신 Awake() 또는 Start()를 사용합니다.
클래스와 객체의 개념을 명확히 이해하면 Unity의 구조를 더 잘 파악하고, 유지보수성과 확장성이 높은 코드를 작성할 수 있습니다.
'Unity' 카테고리의 다른 글
| Unity에서 static 한정자란? (0) | 2025.05.12 |
|---|---|
| Unity에서의 접근제한자란? (1) | 2025.05.08 |
| Unity에서의 Scroll기능 (0) | 2025.04.23 |
| Unity에서 IEnumerator와 Coroutine의 모든 것 (0) | 2025.04.21 |
| Unity LineRenderer는 무엇인가? (0) | 2025.04.18 |