유니티 C# 추상 클래스 사용법 간단 예시 abstract class

반응형

코드 작성

using UnityEngine;

// 추상 클래스 정의
public abstract class Character : MonoBehaviour
{
    // 추상 프로퍼티 (파생 클래스에서 반드시 구현해야 함)
    public abstract int Health { get; set; }

    // 추상 메서드 (파생 클래스에서 반드시 구현해야 함)
    public abstract void Move(Vector3 direction);

    // 일반 메서드
    public void Attack()
    {
        Debug.Log("Character attacks!");
    }

    // 가상 메서드 (선택적으로 재정의 가능)
    public virtual void Die()
    {
        Debug.Log("Character dies.");
    }
}

// 추상 클래스를 상속받는 구체적인 클래스 예시
public class Player : Character
{
    private int health;

    // 구현된 추상 프로퍼티
    public override int Health
    {
        get { return health; }
        set { health = value; }
    }

    // 구현된 추상 메서드
    public override void Move(Vector3 direction)
    {
        transform.Translate(direction * Time.deltaTime);
    }

    // Die 메서드 재정의
    public override void Die()
    {
        base.Die(); // 기본 동작 호출
        Debug.Log("Player dies with custom death animation.");
    }
}

// 추상 클래스를 상속받는 또 다른 구체적인 클래스 예시
public class Enemy : Character
{
    private int health;

    // 구현된 추상 프로퍼티
    public override int Health
    {
        get { return health; }
        set { health = value; }
    }

    // 구현된 추상 메서드
    public override void Move(Vector3 direction)
    {
        transform.Translate(direction * Time.deltaTime * 0.5f); // 적의 이동 속도는 느리게
    }

    // Die 메서드 재정의
    public override void Die()
    {
        base.Die(); // 기본 동작 호출
        Debug.Log("Enemy dies and drops loot.");
    }
}
반응형