Search Issue Tracker
By Design
Votes
1
Found in
2018.3.0a6
2018.3.2f1
2019.1.0a1
2019.2.0a1
Issue ID
1129930
Regression
Yes
Prefab Asset changes are not reflected inside Prefab Editor when changes are made to Prefab Asset reference variable in a Script
Reproduction steps:
1. Open the project inside of "case_1129930-TESTChangePrefab_Unity.zip"
2. Take a look at "2D Prefab" asset through Prefab Editor and pay attention to its colour
3. Open the "SampleScene" and Play it
4. Add "2D Prefab" to the canvas, notice that it is red
5. Open the Prefab Editor again
Expected: The Prefab Editor shows, that the "2D prefab" is red
Actual: The Prefab Editor shows, that the "2D prefab" is white
Reproduces on: 2018.3.0a6, 2018.3.7f1, 2019.1.0b4, 2019.2.0a6
Does not reproduce on: 2017.4.20f2, 2018.3.0a5
Note:
- Prefab Asset restores to its former state if the Project is restarted, which is likely intended because the prefab is not marked as dirty
Add comment
All about bugs
View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.
Latest issues
- WebGL Player with WebGPU Graphics API fails to render Scene when custom Render Feature is used
- “EndLayoutGroup” error thrown when changing Shader Precision Model settings in Build Profiles window > Player Settings Overrides
- Button hover state uses default theme color when a custom .uss is applied
- Samples Showcase script warning does not clear after enabling required settings until GameObject is reselected
- VFX Particles receive shadow artifacts when using ShaderGraph with enabled shadows and Face Camera Plane Orient mode
Resolution Note (2019.2.X):
This example here modifies the imported prefab data but does not save it back to source file. So here the imported data has become out of sync with the source data since the change was not saved back to the .prefab file. In Prefab Mode we open the .prefab source file that is why it is still white (and not red as the unsaved imported prefab asset)
Since 18.3 prefabs are imported this means that changing state on a imported Prefab Asset needs to be saved back to the .prefab source file if this changes should be persisted.
Below is an example of how you can save a change back to the prefab source file when changing the imported Prefab Asset:
Modified from TestColorChange.cs in the repro project:
private void Start()
{
prefab.GetComponent<Image>().color = color1;
#if UNITY_EDITOR
// If the 'prefab' reference above points to an imported Prefab Asset we need to save the change
// back to the .prefab source file if we want this change persisted. (We are not modifying the
// source file but the imported data here). In Prefab Mode we always open the prefab from the
// .prefab file.
if (EditorUtility.IsPersistent(prefab))
PrefabUtility.SavePrefabAsset(prefab);
#endif
GameObject go = Instantiate(prefab, transform);
}