Instance override values are stored as data in the scene or prefab in which they are defined. However, an override becomes “unused” if its target object is either invalid or its Property Path is unknown. In this case, the data becomes unused. It is still stored in the scene file, but is redundant.
For example, if you override the values of a public field on a script attached to a prefab, and then delete the script, the data that contains the override values becomes unused because it targets an object that no longer exists.
Override data also becomes unused if you delete the public field definition, or rename it, because the Property Path no longer matches the stored data, although the component object itself still exists.
Because Unity does not automatically delete unused override data, if you restore the deleted script, or field definition, the override data becomes used again and is applied as an override as before.
If you do not want to keep unused override data, you can check for and remove them using the Overrides menu in the inspector, or from the context menu in the Hierarchy window. The removal includes all unused overrides, and Unity writes details of what was removed to the Editor log.
The Unity Editor can’t automatically determine when or whether your unused data should be cleaned up, because you may have temporarily or accidentally moved the object or property the data refers to, and you might reinstate it later. Removing unused override data that you know you no longer need can be thought of as good practice, because it means your scene file only contains useful data, which can help make version control and collaboration simpler.
Note: You can rename public fields and preserve the associated overridden values by using FormerlySerializedAsAttribute, which performs name conversion to map the field’s old name to its new name.
To check for and remove unused overrides using the Inspector:
Note: The unused overrides panel supports multiple selection, and shows the total number of unused overrides, and the number of instances affected, however it only shows the field name, GameObject name, and value, of up to three of the unused overrides, as shown in the example below:
To check for and remove unused instance overrides from the Hierarchy window:
Note: You can remove all unused overrides in an entire scene by right-clicking the scene’s name in the hierarchy instead of individual GameObjects.