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

 前言:

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();
        }
    }
   
}



  



  

相关推荐

  1. Unity定义框架2)-----------事件

    2024-04-14 18:02:02       40 阅读
  2. Unity定义框架开发

    2024-04-14 18:02:02       38 阅读
  3. Vue定义事件

    2024-04-14 18:02:02       49 阅读
  4. 【Vue 定义事件

    2024-04-14 18:02:02       35 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-14 18:02:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-14 18:02:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-14 18:02:02       87 阅读
  4. Python语言-面向对象

    2024-04-14 18:02:02       96 阅读

热门阅读

  1. ucore 实验物理内存管理篇

    2024-04-14 18:02:02       34 阅读
  2. React state用法 异步总结

    2024-04-14 18:02:02       27 阅读
  3. PV和uv的区别

    2024-04-14 18:02:02       42 阅读
  4. 力扣经典150题第二十二题:Z 字形变换

    2024-04-14 18:02:02       35 阅读
  5. Qt Designer 控件箱中的控件介绍及布局比列分配

    2024-04-14 18:02:02       42 阅读
  6. 基于springboot的多维分类知识管理系统源码数据库

    2024-04-14 18:02:02       25 阅读
  7. 常用镜像地址:pip,yum,jar,linx镜像,apache系列等等

    2024-04-14 18:02:02       31 阅读
  8. okcc呼叫中心人工智能行业2024年市场发展分析

    2024-04-14 18:02:02       29 阅读
  9. 167. 两数之和 II - 输入有序数组

    2024-04-14 18:02:02       35 阅读
  10. Python网络请求:requests库7个功能实战

    2024-04-14 18:02:02       38 阅读
  11. Github 2024-04-10 开源项目日报Top10

    2024-04-14 18:02:02       35 阅读
  12. C#WPF的XAML中String回车换行

    2024-04-14 18:02:02       35 阅读