When you edit a value on a built-in component (for example a Trail Renderer), that value is updated automatically on all instances of that prefab.
For example, if I have a Prefab called MyPrefab with a Trail Renderer component added.
- Change the variable Time of the component to 1.
- Instantiate that prefab via drag & drop.
- Name the new object MyGameObject.
- Check that the variable Time on MyGameObject is 1.
- Go back to MyPrefab and change the parameter Time of the Trail Renderer component to 5.
- Check on MyGameObject that the Time variable is 5.
So it is automatically updated. And, when I edit some variable on MyGameObject, it is shown in bold.
How can I achieve the same functionality in my custom Editors? It doesn’t happen automatically.
I can get some of the functionality if I call PrefabUtility.ResetToPrefabState in my OnInspectorGUI function. But by doing that, the object remains locked: I can’t change values on MyGameObject, the values displayed are always the one from the Prefab.