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); } }
是这样的,我表达的意思就是,游戏模块检测到收到攻击,就发送收到攻击的消息。发送先前,声音和动画模块都注册了这个事件的监听,然后就收到消息就会调用合适的方法。(中介者使用实例)