unity 观察者模式

本文介绍了在Unity项目中如何应用观察者模式实现消息机制。通过定义接口、管理订阅者以及触发事件来阐述观察者模式的基本原理。通过实例代码帮助读者更好地理解和应用这一模式。欢迎大家留言讨论,共同学习进步。
摘要由CSDN通过智能技术生成

 项目用到消息机制时,此时查阅资料 使用观察者模式

下面构图 就是观察者模式原理逻辑构图

 接下来我们使用一个例子让你更容易理解观察者模式

1.定义一个接口

public interface IMessageHandler
{

    // 接收事件
    void HandleMessage(IMessage message);
}

 2.添加,删除订阅者,派发

public class MessageDispatcher : MonoBehaviour {

    protected static List<IMessageHandler> _observerList = new List<IMessageHandler>();

    public static void Dispatch(string message)
    {     
        for (int i = 0; i < _observerList.Count; i++)
        {
            _observerList[i].HandleMessage(message);
        }
    }

    public static void Attach(IMessageHandler handler)
    {
        if (_observerList.IndexOf(handler) == -1)
        {
            _observerList.Add(handler);
        }
    }

    public static void Detach(IMessageHandler h
Unity中的观察者模式是一种设计模式,用于实现对象之间的一对多依赖关系。它允许一个被观察的对象(称为主题或被观察者)维护一组依赖于它的对象列表(称为观察者),并在状态发生变化时自动通知观察者。 在Unity中,可以使用C#语言和相关的Unity API来实现观察者模式。下面是一个简单的示例: ```csharp // 定义观察者接口 public interface IObserver { void OnNotify(); } // 定义被观察者类 public class Subject { private List<IObserver> observers = new List<IObserver>(); public void AddObserver(IObserver observer) { observers.Add(observer); } public void RemoveObserver(IObserver observer) { observers.Remove(observer); } public void NotifyObservers() { foreach (var observer in observers) { observer.OnNotify(); } } } // 实现观察者类 public class Observer : IObserver { public void OnNotify() { // 处理通知的逻辑 } } // 使用观察者模式 public class Example : MonoBehaviour { private Subject subject = new Subject(); private Observer observer = new Observer(); private void Start() { subject.AddObserver(observer); } private void Update() { if (Input.GetKeyDown(KeyCode.Space)) { subject.NotifyObservers(); } } } ``` 在上面的示例中,Subject类是被观察者,它维护了一个观察者列表。Observer类是观察者,它实现了IObserver接口的OnNotify方法来处理通知的逻辑。Example类演示了如何使用观察者模式,在Start方法中将观察者添加到被观察者的列表中,在Update方法中按下空格键时通知观察者。 这只是一个简单的例子,实际应用中可能会有更复杂的场景和逻辑。观察者模式Unity中的应用广泛,可以用于处理事件、消息传递、UI更新等各种情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值