I use Observer a lot these days now I’ve veered away from Singetons
public static Action<Collectable> OnCollect = delegate { };
I tend to use a Static Action so don’t need to call GetComponent.
Are there any issues with this? Other than you dont like static!
I also add = delegate { };
on the end of my Action and so dont need to check if its not null and just call it.
OnCollect(collectable);
From what I remember UnityEvents were not so good passing multiple bits around when I was playing with them so I tend to just use the C# one.
Plus if you have a number of UnityEvents set up in the Inspector and you accidently reset or corrupt it, it can be a nightmare trying to remember what needed to know about it so I found ‘hardcoding’ it better and safer