观察者模式(Observer):
一句话特点:不断地询问
举个栗子:像是时间计时器就符合这个模式,程序在Update中不断地累加计时器,不断询问计时器是否到达了应该调用方法的时间点,如果到了那就归零,并且调用方法,这种不断询问的方法也就是观察者模式Observer;
void Update(){
timeCount++;
if(timeCount>0.5f)
{
timeCount=0;
//To Do Something
}
}
}
代理模式:
1.一句话特点:给别的类安装一个间谍(指向方法的指针)
举个栗子:
鼠标点击事件中,给UGUI的button控件的Onclick事件AddListener,这就是安插一个间谍,一旦敌人动手了,间谍就会发谍报过来,警示我.
private btn = transform.GetComponent<Button>();
void Start()
{
//分配的空间在栈上
btn.OnClick.AddListener(OnClick);
//分配的空间在堆上
btn.OnClick.AddListener(new UnityAction(OnClick));
}
public void OnClick()
{
Debug.Log("OnClick");
}
}