首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Unity SKFramework框架(六)、Messenger 消息中心

Unity SKFramework框架(六)、Messenger 消息中心

作者头像
CoderZ
发布2022-08-29 17:09:38
发布2022-08-29 17:09:38
5930
举报

简介

Messenger消息中心包含两部分内容,一部分是消息的发布、订阅系统,另一部分是消息的打包、拆包系统。它们是用于脚本之间解耦的利器。

一、消息发布、订阅系统

1.发布消息

代码语言:javascript
复制
//发布消息主题为Example的消息 
//消息内容为一个int类型的数值50
Messenger.Publish("Example", 50);

消息主题支持string和int两种类型:

2.订阅消息

代码语言:javascript
复制
using UnityEngine;
using SK.Framework;

public class Example : MonoBehaviour
{
    private void Start()
    {
        //订阅消息主题为Example的消息
        //订阅后,当该主题的消息发布时,订阅事件将会被执行
        Messenger.Subscribe<int>("Example", SubscribeEvent);

        //发布消息主题为Example的消息 
        //消息内容为一个int类型的数值50
        Messenger.Publish("Example", 50);
    }
    private void SubscribeEvent(int num)
    {
        Debug.Log(num);
    }
}

3.取消订阅

代码语言:javascript
复制
//取消订阅消息主题为Example的消息
//取消后,消息主题为Example的消息被发布时,订阅事件SubscribeEvent不再会执行
Messenger.Unsubscribe<int>("Example", SubscribeEvent);

二、消息打包、拆包系统

1.消息打包

代码语言:javascript
复制
using UnityEngine;
using SK.Framework;

public class Example : MonoBehaviour
{
    private void Start()
    {
        //消息打包 标识符为Example 
        //消息内容为一个int类型数值50
        Messenger.Pack("Example", 50);
    }
}

2.消息拆包

代码语言:javascript
复制
using UnityEngine;
using SK.Framework;

public class Example : MonoBehaviour
{
    private void Start()
    {
        //消息打包 标识符为Example 
        //消息内容为一个int类型数值50
        Messenger.Pack("Example", 50);

        //消息拆包 标识符为Example
        Messenger.Unpack<int>("Example", UnpackEvent);
    }
    private void UnpackEvent(int num)
    {
        Debug.Log(num);
    }
}

该部分可以将消息中心理解为日常生活中的快递站,标识码identifier则是手机尾号,用于取件。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-05-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 当代野生程序猿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、消息发布、订阅系统
    • 1.发布消息
    • 2.订阅消息
    • 3.取消订阅
    • 1.消息打包
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档