public interface IEndGameObserver
{
void EndNotify();
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GameManager : Singleton<GameManager>
{
protected override void Awake()
{
base.Awake();
DontDestroyOnLoad(this);
}
List<IEndGameObserver> endGameObservers = new List<IEndGameObserver>();
//添加监听
public void AddObserver(IEndGameObserver observer)
{
endGameObservers.Add(observer);
}
//移除监听
public void RemoveObserver(IEndGameObserver observer)
{
endGameObservers.Remove(observer);
}
//广播
public void NotifyObserver()
{
foreach (var observer in endGameObservers)
{
observer.EndNotify();
}
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EnemyCtrl : MonoBehaviour,IEndGameObserver
{
//广播回调
public void EndNotify()
{
}
//添加监听
void OnEnable()
{
GameManager.Instance.AddObserver(this);
}
//移除监听
void OnDisable()
{
GameManager.Instance.RemoveObserver(this);
}
// Start is called before the first frame updat
void Start()
{
}
// Update is called once per frame
void Update()
{
}
}
|