观察者模式:通过计时操作,不断地进行询问。(耗费资源)
举例:每隔0.5s播放一个音效。
/*
*观察者模式:不断地询问,进行定时操作
*/
public class Obsertor : MonoBehaviour
{
//定义AudioSource组件
AudioSource audioSource;
//设置定时器
float timer = 0;
// Start is called before the first frame update
void Start()
{
//获取Audio Source组件
audioSource = transform.GetComponent<AudioSource>();
}
// Update is called once per frame
void Update()
{
timer += Time.deltaTime;
//如果时间超过3S,播放音效
if (timer >= 3f)
{
audioSource.Play();
timer = 0;
}
}
}
代理模式的实现
/*
* 代理模式:方法的指针指向其他类的方法,更像是一种工具。
* 用途:一个类要引用另一个类的方法。
*/
public class Husband {
Wife myWife=new Wife();
public void AddMoney() { myWife.leadMoney(); }
public void Notice() { Debug.Log("Say Bad Words!"); }
}
public class Wife {
public void leadMoney() { }
//定义一个委托:带方法的指针
public delegate void WifeSister();
public WifeSister wifeSister;
//实现委托
public void SayBadWords() { wifeSister(); }
}
public class DaiLi : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
Husband husTem = new Husband();
Wife wifTem = new Wife();
husTem.AddMoney();
//带方法的指针指向其他类的方法
wifTem.wifeSister += husTem.Notice;
//委托的实现
wifTem.SayBadWords();
}
本文介绍了观察者模式在游戏开发中如何用于定时触发事件,例如每0.5秒播放音效,以及代理模式如何作为工具,通过委托实现类间方法调用,例如丈夫和妻子之间的交互。这两种设计模式在提高代码组织和灵活性方面具有重要作用。
1825

被折叠的 条评论
为什么被折叠?



