delegate è la dichiarazione di un tipo delegato.
delegate è un tipo riferimento che può essere utilizzato per incapsulare un metodo.
In poche parole possiamo incapsulare o o più funzioni (multicast) all’interno di un songolo delegate.
Creare un Empty Object ed allegare lo script MulticastScript.cs
using UnityEngine; using System.Collections; public class MulticastScript : MonoBehaviour { delegate void MultiDelegate(); MultiDelegate myMultiDelegate; // creo la variabile contenitore void Start() { myMultiDelegate += PowerUp; // aggiungo il metodo PowerUp() myMultiDelegate += TurnRed; // aggiungo il metodo TurnRed() if (myMultiDelegate != null) // controllo che non sia nullo { myMultiDelegate(); // stampa Power UP! Turn to RED } myMultiDelegate -= PowerUp; // tolgo il metodo PowerUp() myMultiDelegate(); // Turn to RED } void PowerUp() { print("Power UP!"); } void TurnRed() { print("Turn to RED"); } }
Con delegate possiamo incapsulare una singola funzione con parametri.
Creare un Empty Object ed allegare lo script DelegateScript.cs
using UnityEngine; using System.Collections; public class DelegateScript : MonoBehaviour { delegate void MyDelegate(int num); // creo il delegato con una proprietà int MyDelegate myDelegate; // notare che i nomi sono uguali void Start() { myDelegate = PrintNum; // assegno al delegato la funzione PrintNum() myDelegate(50); // invio a PrintNum(50) myDelegate = DoubleNum; myDelegate(50); } void PrintNum(int num) { print("Print Num: " + num); } void DoubleNum(int num) { print("Double Num: " + num * 2); } // print: // 50 // 100 }