Guía para principiantes de la interfaz C# de Unity

Una interfaz en C# es un contrato que define un conjunto de métodos, propiedades y eventos que debe implementar una clase. Actúa como modelo para implementar la funcionalidad en múltiples clases. Las interfaces proporcionan una forma de lograr el polimorfismo, lo que permite que diferentes clases compartan comportamientos comunes.

Unity Interfaz C#

Para usar interfaces en Unity, siga los pasos a continuación:

  • Cree un nuevo script y asígnele el nombre que desee (en mi caso, lo llamaré InterfaceContainer)
  • Elimine todo lo que contiene y luego pegue el código a continuación:
public interface IEntity
{
    void Initialize(); //Function without any arguments
    float health { get; set; } //A variable
    void ApplyDamage(float points); //Function with one argument
}

La interfaz se llama IEntity (Nota: La mayúscula i al principio no es necesaria, pero por conveniencia, nombra todas tus interfaces con I' at the start, that way you would know when the class uses an interface).'

Para usar la interfaz en un script C#, siga los pasos a continuación:

  • Cree un nuevo script y asígnele el nombre que desee (en mi caso, lo llamaré EntityScript)
  • Agregue el nombre de la interfaz después de MonoBehaviour, que es IEntity en este caso (separado por una coma)
public class EntityScript : MonoBehaviour, IEntity

Notará que el script da un error, eso es porque los métodos de la interfaz no están implementados. Así que implementemos métodos de 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;
    }
}

Los métodos de interfaz ahora están implementados.

¿Cómo simplifican las interfaces el flujo de trabajo de programación?

La principal ventaja de las interfaces de C# es que pueden ser utilizadas por múltiples clases, por lo que en lugar de llamar a GetComponent para cada secuencia de comandos, puede obtener todas las referencias de secuencias de comandos mediante la interfaz nombre.

Utilice las interfaces de C# cuando necesite implementar los mismos métodos en más de un script o cuando necesite hacer referencia a una clase desconocida en el mismo contexto.

Revisa el ejemplo a continuación:

        //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

El script anterior obtiene un componente con una interfaz IEntity y luego llama a sus métodos.

Prima

Las interfaces también pueden aceptar tipos de datos personalizados, por ejemplo:

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

Luego, el tipo de datos se proporciona al implementar la interfaz en una clase (puede ser un tipo estándar como float o int, o un tipo más complejo como Class o incluso otra interfaz):

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;
    }
}
Artículos sugeridos
Introducción a la Máquina de Estado en Unity
Una guía para cargar escenas en Unity
Guía completa para transformar la rotación en Unity
Implementación del control de auriculares VR en Unity
Una guía para integrar el controlador de Nintendo con Unity
Script para capturar objetos en Unity
Creando una escena de Game Over en Unity