SerializeReference still has many issues. For example it’s not like you can put [SerializeReference] on an interface field and it will automatically show you a dropdown of every object that implements that interface and store it nicely. I think you know this given this thread: https://discussions.unity.com/t/871555
In any case, I deleted the portion about ScriptableObject since the editing solution is not the crux of the issue here. If there’s a way to create a game design data system using ScriptableObjects that fulfills all the above requirements, I’d love to see it. None of the code examples I’ve seen in similar threads have been able to solve the problem.