I ran into another issue with [SerializeReference]. If I have such a field on a component that's used in a prefab, and I then change the type inside the that field to something else in a prefab instance (either as part of another prefab, or in the scene itself), the new type doesn't actually get saved. I think this is because Unity's serialisation format doesn't actually have a way to specify type overrides yet. Is this a known issue? Are there any known workarounds? With all these teething issues, I'm probably going to go back to [SerializeField], ISerializationCallbackReceiver and type-indicating enums for now. The new feature to serialise references is really powerful, but doesn't quite feel like a first-class citizen in Unity just yet.