Unity自定义框架(2)-----------事件中心

本文详细阐述了Unity中的事件中心框架,强调其在游戏开发中的重要性,包括提高代码的解耦性、灵活性和模块化,通过C#的委托和事件机制实现跨模块通信。
摘要由CSDN通过智能技术生成

 前言:

Unity作为一款强大的游戏开发引擎,提供了丰富的工具和框架,其中事件中心框架是一个备受关注的重要组成部分。本文将深入探讨Unity事件中心框架的重要性以及它在游戏开发中的作用。

什么是事件中心框架?

事件中心框架是一种设计模式,它允许游戏中的不同部分之间进行松耦合的通信。在Unity中,这一框架通过使用C#的委托和事件机制来实现。通过事件中心,游戏中的各个模块可以订阅和触发事件,实现模块之间的解耦和灵活性。

为什么事件中心框架如此重要?

1. 解耦性

在游戏开发中,各个模块之间的紧密耦合可能导致代码难以维护和扩展。事件中心框架通过允许模块之间通过事件进行通信,降低了它们之间的依赖性,使得代码更加清晰、可读和易于维护。

2. 灵活性

事件中心框架为游戏开发提供了更大的灵活性。模块可以选择订阅感兴趣的事件,而不需要了解其他模块的具体实现细节。这使得在不影响整体结构的情况下进行修改和更新变得更加容易。

3. 模块化

通过将不同功能的代码封装成模块,并通过事件中心进行通信,游戏开发可以更容易地实现模块化。这种模块化的设计使得团队能够更好地协作,每个成员可以专注于自己负责的部分而无需关心整个项目的细节。

代码如下:



using System.Collections.Generic;
using UnityEngine;

public class MessageCenter
{

    public delegate void MessageCallback(object Value);

    public static Dictionary<string, MessageCallback> _dicMessages = new Dictionary<string, MessageCallback>();


    /// <summary>
    /// 添加监听消息
    /// </summary>
    /// <param name="MsgName">消息名字</param>
    /// <param name="messageCallback">消息的回调</param>
    public static void AddMsgListenner(string MsgName, MessageCallback messageCallback)
    {

        if (!_dicMessages.ContainsKey(MsgName))
        { _dicMessages.Add(MsgName, null); }
        _dicMessages[MsgName] += messageCallback;


    }

   /// <summary>
   /// 移除消息
   /// </summary>
   /// <param name="MsgName"></param>
   /// <param name="messageCallback"></param>
    public static void RemoveMsgListenner(string MsgName, MessageCallback messageCallback)
    {

        if (_dicMessages.ContainsKey(MsgName))
        {

            _dicMessages[MsgName]-=messageCallback;
        }

    }

    /// <summary>
    /// 发送消息
    /// </summary>
    /// <param name="MsgName"></param>
    /// <param name="MsgValue"></param>

    public static void SendMessage(string MsgName, object MsgValue = null)
    {
        MessageCallback messageCallback;

        _dicMessages.TryGetValue(MsgName, out messageCallback);
        if (messageCallback != null)
        {
            messageCallback(MsgValue);
        }
    }

    /// <summary>
    /// 移除所有事件监听
    /// </summary>
    public static void RemoveAllListenner()
    {
        if (_dicMessages.Count!=0)
        {
            _dicMessages.Clear();
        }
    }
   
}



  



  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值