Unity C# 인터페이스 초보자 가이드

C#의 인터페이스는 클래스가 구현해야 하는 메서드, 속성 및 이벤트 집합을 정의하는 계약입니다. 이는 여러 클래스에서 기능을 구현하기 위한 청사진 역할을 합니다. 인터페이스는 다형성을 달성하는 방법을 제공하여 다양한 클래스가 공통 동작을 공유할 수 있도록 합니다.

Unity C# 인터페이스

Unity에서 인터페이스를 사용하려면 다음 단계를 따르세요.

  • 새 스크립트를 만들고 이름을 지정합니다(제 경우에는 InterfaceContainer로 이름 지정하겠습니다).
  • 그 안의 모든 항목을 제거한 후 아래 코드를 붙여넣습니다.
public interface IEntity
{
    void Initialize(); //Function without any arguments
    float health { get; set; } //A variable
    void ApplyDamage(float points); //Function with one argument
}

인터페이스 이름은 IEntity입니다(참고: 처음에 대문자 i는 필요하지 않지만 편의를 위해 모든 인터페이스 이름을 'I'로 지정합니다. 시작하면 클래스가 언제 인터페이스를 사용하는지 알 수 있습니다.)

C# 스크립트에서 인터페이스를 사용하려면 다음 단계를 따르세요.

  • 새 스크립트를 만들고 이름을 지정합니다. (제 경우에는 EntityScript로 이름을 지정하겠습니다)
  • MonoBehaviour 뒤에 인터페이스 이름을 추가합니다. 이 경우 IEntity입니다(쉼표로 구분).
public class EntityScript : MonoBehaviour, IEntity

인터페이스 메소드가 구현되지 않았기 때문에 스크립트에서 오류가 발생하는 것을 알 수 있습니다. 이제 IEntity 메소드를 구현해 보겠습니다.

using UnityEngine;

public class EntityScript : MonoBehaviour, IEntity
{

    public float health { get; set; }

    public void Initialize()
    {
        health = 100;
    }

    public void ApplyDamage(float points)
    {
        health -= points;
    }
}

이제 인터페이스 메소드가 구현되었습니다.

인터페이스는 프로그래밍 작업 흐름을 어떻게 단순화합니까?

C# 인터페이스의 가장 큰 장점은 여러 클래스에서 사용할 수 있으므로 각 스크립트에 대해 GetComponent를 호출하는 대신 인터페이스 이름을 사용하여 모든 스크립트 참조를 가져올 수 있다는 것입니다.

둘 이상의 스크립트에서 동일한 메서드를 구현해야 하거나 동일한 컨텍스트에서 알 수 없는 클래스를 참조해야 하는 경우 C# 인터페이스를 사용합니다.

아래 예를 확인하세요.

        //Get the script that uses IEntity interface
        IEntity interfaceEntity = gameObject.GetComponent<IEntity>();
        interfaceEntity.Initialize(); //Initializing the entity
        interfaceEntity.ApplyDamage(10); //Applying the damage
        interfaceEntity.health += 10; //Healing the entity

위의 스크립트는 IEntity 인터페이스가 있는 구성 요소를 가져온 다음 해당 메서드를 호출합니다.

보너스

인터페이스는 다음과 같은 사용자 정의 데이터 유형을 허용할 수도 있습니다.

public interface IHealable<T>
{
    void Heal(T type);
}

그런 다음 클래스에서 인터페이스를 구현할 때 데이터 유형이 제공됩니다(float 또는 int과 같은 표준 유형이거나 Class 또는 다른 유형과 같은 더 복잡한 유형일 수 있음). 상호 작용):

using UnityEngine;

public class EntityScript : MonoBehaviour, IEntity, IHealable<int>
{

    public float health { get; set; }

    public void Initialize()
    {
        //health = 100;
        Heal(100);
    }

    public void ApplyDamage(float points)
    {
        health -= points;
    }

    public void Heal(int points)
    {
        health = points;
    }
}
추천 기사
Unity의 상태 머신 소개
Nintendo 컨트롤러와 Unity 통합 가이드
Unity의 씬 로딩 가이드
Unity의 회전 변환에 대한 종합 가이드
Unity의 MonoBehaviour 가이드
Unity에서 대화형 개체 만들기
Unity에서 운동학적 상호작용 구현