using UnityEngine;publicclassObserver1{publicvoidInit(){
EventSystem.Instance.Attach(EventType.Subject1,(args)=>{Subject1Args a = args as Subject1Args;if(a==null){
Debug.LogError("Observer1监听事件的方法调用的不对");return;}
Debug.Log("Observer1订阅了"+ a.GetName()+"正在被调用");});
EventSystem.Instance.Attach(EventType.Subject2,(args)=>{Subject2Args a = args as Subject2Args;
Debug.Log("Observer2订阅了"+ a.GetName()+"正在被调用");});}}
using UnityEngine;publicclassObserver2{publicvoidInit(){
EventSystem.Instance.Attach(EventType.Subject1,(args)=>{Subject1Args a = args as Subject1Args;if(a ==null){
Debug.LogError("Observer2监听事件的方法调用的不对");return;}
Debug.Log("Observer2订阅了"+ a.GetName()+"正在被调用");});}}
using System;publicclassSubject1Args:EventArgs{string Name;publicstringGetName(){return Name;}publicSubject1Args(string name){this.Name = name;}}
using System;publicclassSubject2Args:EventArgs{string Name;publicstringGetName(){return Name;}publicSubject2Args(string name){this.Name = name;}}
using System.Collections;using System.Collections.Generic;using UnityEngine;namespace demospace
{publicclass test : MonoBehaviour
{voidStart(){var obs1 =newObserver1();var obs2 =newObserver2();
obs1.Init();
obs2.Init();
EventSystem.Instance.Notify(EventType.Subject1,newSubject1Args("Subject1"));
EventSystem.Instance.Notify(EventType.Subject2,newSubject2Args("Subject2"));}}}