public class SystemMediator : Mediator {
}using UnityEngine;
public class AniSystem : SubSystem
{
public AniSystem(Mediator mediator) : base(mediator) { }
public override void Init()
{
mMediator.RegistAction("hit", HitAction);
}
public void HitAction(object data)
{
Debug.Log("收到攻击。播放动画");
}
}using UnityEngine;
public class AudioSystem : SubSystem
{
public AudioSystem(Mediator mediator) : base(mediator) { }
public override void Init()
{
mMediator.RegistAction("hit", HitAction);
}
private void HitAction(object data)
{
Debug.Log("收到攻击,播放声音");
}
}public class GameSystem : SubSystem
{
public GameSystem(Mediator mediator) : base(mediator) { }
public override void Init()
{
//假装是触发消息
mMediator.SendMes("hit", 100);
}
}using UnityEngine;
public class testMediator : MonoBehaviour {
void Start () {
SystemMediator ss = new SystemMediator();
AudioSystem audioSystem = new AudioSystem(ss);
AniSystem aniSystem = new AniSystem(ss);
GameSystem gameSystem = new GameSystem(ss);
}
}是这样的,我表达的意思就是,游戏模块检测到收到攻击,就发送收到攻击的消息。发送先前,声音和动画模块都注册了这个事件的监听,然后就收到消息就会调用合适的方法。(中介者使用实例)