Unity - Interface로 원하는 동작 해보기

2024. 7. 10. 16:22Unity/Unity 학습정리

  Interface는 클래스와 비슷하게 메서드, 필드, 이벤트 등을 가지지만 실제 구현은 인터페이스 내에서 이루어지지 않는다. 해당 인터페이스를 상속받는 클래스에서 직접 구현을 해주어야하고, 인터페이스는 객체를 자체적으로 생성하지 못한다. 유니티에서는 인터페이스를 활용한 장점이 또 한가지 있는데 TryGetComponent<>()를 이용해서  해당 컴포넌트를 가지고있는지 확인하고 가지고 있다면 코드를 실행하는 방법이 있다.

 

public interface IDamageable
{
    void TakeDamage(int damage);
    bool IsDead();
}
 

IDamageable 인터페이스를 만들고 해당 인터페이스를 상속시키면 TakeDamage와 IsDead를 구현해야한다.

public virtual void OnAttack()
{
    GameObject target = GetTarget();
    if (target == null) return;
    CalculateCritical();
    if (target.TryGetComponent<IDamageable>(out IDamageable component))
    {
        if (component.IsDead()) return;
        component.TakeDamage(FinalDamage);
        GameObject obj = Instantiate(EffectPrefab, EffectTrasnform.position, Quaternion.identity);
        Destroy(obj, 2f);
    }
    FinalDamage = Damage;
}

  OnAttack이라는 공격 메서드에서 타겟이 IDamageable 컴포넌트를 가지고 있다면 데미지를 주는 로직을 실행하는 방식으로 인터페이스를 이용할 수 있다.

'Unity > Unity 학습정리' 카테고리의 다른 글

Unity - 몬스터 모드 변경  (0) 2024.07.11
플레이어를 쫓아다니는 몬스터 AI 구현  (0) 2024.07.04
FSM StateMachine 상속  (0) 2024.07.01
Unity - Behaviour Tree (1)  (0) 2024.06.25
Unity - FSM(Finite State Machine)(3)  (0) 2024.06.20