ScriptableObject 监听事件问题

ScriptableObject 事件监听我 实在研究不明白了,谢谢帮忙
我想就是通过监听value数字改变 来运行change方法 这样达到监听效果
但是我下面写了2个代码不行, 实在不知道什么地方错误 请帮忙看看

[CreateAssetMenu(fileName = "playerBlood", menuName = "Plyaer/playerBlood")]
public class FloatbloodSo : ScriptableObject
{
    [SerializeField] private float value;
    public float Value => value;
    public Action change;
}

上面的是 ScriptableObject

    [SerializeField]
    private FloatbloodSo Hp;
    public FloatbloodSo Maxhp;
    private Image hleathbar;

    private void Awake()
    {
        hleathbar = GetComponent();
    }
    private void Start()
    {
        Hp.change += () => hleathbar.fillAmount = Hp.Value / Maxhp.Value;
    }

change在哪调用的,血量变化的时候要调用change方法

void AddOrSubHp(){
xxx.change?.Invoke();
}