Interfaces

Uma interface, nesse contexto, não se trata da interface de usuário(UI), mas de uma ferramenta de Orientação à Objetos que nos permite abstrair classes à um conjunto de métodos comuns a todas elas.

Pegue por exemplo, Um ataque do jogador que pode atingir inimigos e objetos quebráveis, podemos implementá-lo da seguinte forma:

public interface IDamageable
{
	void Damage(int amount);
}

No script do ataque

void OnTriggerEnter2D(Collider2D collision)
{
	hit = collision.GetComponent<IDamageable>()
	if(hit != null)
	{
		hit.Damage(dano); 
	}
}

No script do inimigo

public class Enemy: MonoBehaviour, IDamageable
{
	int health = 100;
	/* Implementação da classe
	.
	.
	.
	*/
	
	
	void Damage(int amount)
	{
		health -= amount;
	}
}

No script do objeto quebrável

public class Crate: MonoBehaviour, IDamageable
{
	/* Implementação da classe
	.
	.
	.
	*/
	
	void BreakObject()
	{
		Destroy(gameObject);
	}
	
	void Damage(int amount)
	{
		BreakObject();
	}
}