Unity 3D Game Engine – JavaScript – Interfaces
I ‘contratti’ di Interfaces permettono di aggiungere ad una classe nuove funzioni specificate all’interno di un’altra classe esterna.
Se 2 classi sono A padre->B figlio il figlio potrà usare le funzioni del padre
Se 2 classi hanno un contratto di Interface la classe A (interface) è estesa nelle funzioni dalla classe B (B implements A)
Le Interfaces vengono dichiarate con ‘I maiuscola+lettera maiuscola+nome’, ad esempio IKillable, IDamageable etc…
Le interfaces sono utili quando dobbiamo mettere in relazioni classi che non ha senso considerare padre-figlio. Ad esempio una classe Muro e una classe Auto non ha senso che siano padre-figlio, ma in comune potrebbero avere il fatto che entrambe possono essere danneggiate.
Interfaces.
#pragma strict //This is a basic interface with a single required //method. public interface IKillable { function Kill(); } //Javascript does not allow generic types to //be defined, so this version of IDamageable //uses a float type public interface IDamageable { function Damage(damageTaken : float); }
Avatar Class
#pragma strict public class Avatar extends MonoBehaviour implements IKillable, IDamageable { //The required method of the IKillable interface public function Kill() { //Do something fun } //The required method of the IDamageable interface public function Damage(damageTaken : float) { //Do something fun } }
Come funziona?
1. Avatar Class
– classe pubblica Avatar implementa Interface IKillable
– funzione pubblica Kill() e Damage()
2. Interfaces
– public interface IKillable -> richiama la funzione Kill() da Avatar Class