可以简单的视作函数的容器,可以进行传递或像变量一样使用,像变量一样像委托分配值且可以在运行时更改,区别在于变量包含数据而委托包含函数。

DelegateScript

  1. public class DelegateScript : MonoBehaviour
  2. { //定义像方法,声明像变量
  3. delegate void MyDelegate(int num);
  4. MyDelegate myDelegate;
  5. void Start ()
  6. {
  7. myDelegate = PrintNum;
  8. myDelegate(50);
  9. myDelegate = DoubleNum;
  10. myDelegate(50);
  11. }
  12. void PrintNum(int num)
  13. {
  14. print ("Print Num: " + num);
  15. }
  16. void DoubleNum(int num)
  17. {
  18. print ("Double Num: " + num * 2);
  19. }
  20. }

MulticastScript

多播委托

通过这种方法我们可以叠加功能

  1. public class MulticastScript : MonoBehaviour
  2. {
  3. delegate void MultiDelegate();
  4. MultiDelegate myMultiDelegate;
  5. void Start ()
  6. {
  7. myMultiDelegate += PowerUp;
  8. myMultiDelegate += TurnRed;
  9. if(myMultiDelegate != null)
  10. {
  11. myMultiDelegate();
  12. }
  13. }
  14. void PowerUp()
  15. {
  16. print ("Orb is powering up!");
  17. }
  18. void TurnRed()
  19. {
  20. renderer.material.color = Color.red;
  21. }
  22. }