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