Unity

Unity에서의 객체? 클래스? 생성자?

anvil925 2025. 5. 7. 22:41
728x90
반응형

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의 구조를 더 잘 파악하고, 유지보수성과 확장성이 높은 코드를 작성할 수 있습니다.

728x90
반응형

'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