Unity【Multiplayer 多人在线】- Socket 通用服务端框架(五)、Messenger 事件发布、订阅系统
【摘要】
介绍
在阅读了罗培羽著作的Unity3D网络游戏实战一书后,博主综合自己的开发经验与考虑进行部分修改和调整,将通用的客户端网络模块和通用的服务端框架进行提取,形成专栏,介绍Socket网络编程,希望对其他人有所帮助。目录如下:
 ...
介绍
在阅读了罗培羽著作的Unity3D网络游戏实战一书后,博主综合自己的开发经验与考虑进行部分修改和调整,将通用的客户端网络模块和通用的服务端框架进行提取,形成专栏,介绍Socket网络编程,希望对其他人有所帮助。目录如下:
一、通用服务端框架
(五)、Messenger 事件发布、订阅系统
二、通用客户端网络模块
本篇内容:
-
namespace SK.Framework
-
{
-
/// <summary>
-
/// 消息发布、订阅系统
-
/// </summary>
-
public class Messenger
-
{
-
public delegate void MessageEvent(params object[] args);
-
-
private static readonly Dictionary<string, MessageEvent> msgDic = new Dictionary<string, MessageEvent>();
-
-
/// <summary>
-
/// 发布消息
-
/// </summary>
-
/// <param name="msgKey">消息Key值</param>
-
/// <param name="arg">参数</param>
-
public static void Publish(string msgKey, params object[] args)
-
{
-
if (msgDic.ContainsKey(msgKey))
-
{
-
msgDic[msgKey].Invoke(args);
-
}
-
}
-
/// <summary>
-
/// 订阅消息
-
/// </summary>
-
/// <param name="msgKey">消息Key值</param>
-
/// <param name="messageEvent">订阅事件</param>
-
public static void Subscribe(string msgKey, MessageEvent messageEvent)
-
{
-
if (msgDic.ContainsKey(msgKey))
-
{
-
msgDic[msgKey] += messageEvent;
-
}
-
else
-
{
-
msgDic[msgKey] = messageEvent;
-
}
-
}
-
/// <summary>
-
/// 取消订阅
-
/// </summary>
-
/// <param name="msgKey">消息Key值</param>
-
/// <param name="messageEvent">订阅事件</param>
-
public static void Unsubscribe(string msgKey, MessageEvent messageEvent)
-
{
-
if (msgDic.ContainsKey(msgKey))
-
{
-
msgDic[msgKey] -= messageEvent;
-
if (msgDic[msgKey] == null)
-
{
-
msgDic.Remove(msgKey);
-
}
-
}
-
}
-
}
-
}
参考资料:《Unity3D网络游戏实战》(第2版)罗培羽 著
文章来源: coderz.blog.csdn.net,作者:CoderZ1010,版权归原作者所有,如需转载,请联系作者。
原文链接:coderz.blog.csdn.net/article/details/124055392
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)