在这个例子中运用了委托事件机制
讲述了事件和委托的区别
最大的区别是:
事件是特殊的受限的委托,事件只能在类内部调用,不能在类的外部调用起到保护作用,可以在类的外部通过+=添加事件
1、首先是Cat的类代码如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
public class Cat {
private string name;
private string color;
public event Action catCome;//事件不能在类的外部触发,只能在类的内部触发。 委托都可以触发。
public Cat(string name,string color)
{
this.name=name;
this.color=color;
}
public void CatComing()
{
Debug.Log(color+"的猫"+name+"过来了");
if(catCome!=null)
{
catCome();
}
}
}
2、其次是Mouse的类代码如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Mouse {
private string name;
private string color;
public Mouse(string name,string color,Cat cat)
{
this.name=name;
this.color=color;
cat.catCome+=RunAway;
}
public void RunAway()
{
Debug.Log(color +"的老鼠"+name+"说猫来了");
}
}
3、最后是Main方法代码如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GameManager : MonoBehaviour {
// Use this for initialization
void Start () {
Cat cat=new Cat("加菲猫","黄色");
Mouse mouse1=new Mouse("米奇","黑色",cat);
Mouse mouse2=new Mouse("airu","白色",cat);
cat.CatComing();
}
// Update is called once per frame
void Update () {
}
}