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

目录

简介

一、消息发布、订阅系统

1.发布消息

2.订阅消息

3.取消订阅

二、消息打包、拆包系统

1.消息打包

2.消息拆包


简介

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

一、消息发布、订阅系统

1.发布消息

//发布消息主题为Example的消息 
//消息内容为一个int类型的数值50
Messenger.Publish("Example", 50);

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

2.订阅消息

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.取消订阅

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

二、消息打包、拆包系统

1.消息打包

using UnityEngine;
using SK.Framework;

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

2.消息拆包

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则是手机尾号,用于取件。

猜你喜欢

转载自blog.csdn.net/qq_42139931/article/details/124800452