实现:当Player被禁用时,Observer变大且颜色变为红色
对于Player,挂载以下脚本:
using UnityEngine;
using UnityEngine.Events;
public class Player : MonoBehaviour
{
public static UnityAction actionOnDisable;
private void OnDisable() => actionOnDisable?.Invoke();
}
对于Observer,挂载以下脚本:
using UnityEngine;
public class Observer : MonoBehaviour
{
private void OnEnable()
{
Player.actionOnDisable += BecomeBigger;
Player.actionOnDisable += BecomeRed;
}
private void OnDisable()
{
Player.actionOnDisable -= BecomeBigger;
Player.actionOnDisable -= BecomeRed;
}
void BecomeBigger() => gameObject.transform.localScale *= 2;
void BecomeRed() => gameObject.GetComponent<MeshRenderer>().material.color = Color.red;
}
未运行游戏时:
当Player被禁用时,Observer均有正确的反应: