Search Issue Tracker
By Design
Votes
0
Found in
2019.4
2019.4.16f1
2020.3
2021.1
2021.2
2022.1
Issue ID
1368047
Regression
No
EditorApplication.playModeStateChanged event is inaccurate when raised from Prefab script
How to reproduce:
1. Open the user's attached project
2. Open scene Scenes/SampleScene
3. Press the Play button
4. Observe the Console
Expected result: the load times logged to the Console from the two GameObjects are the same
Actual result: the load time logged from the Prefab is incorrect
Reproducible with: 2019.4.31f1, 2020.3.21f1, 2021.1.26f1, 2021.2.0b16, 2022.1.0a12
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
- SearchColumn of type "ObjectReference" does not get refreshed for the custom SearchProvider when lighting generation finishes
- LogWarning is not executed in the HDRP package script when running the project in -batchmode
- Freeze on DynamicHeapAllocator::InitializeMemoryRegion when entering Play mode in a specific scene
- Memory usage rises when switching scenes with GRD enabled and a loaded texture in URP
- [Quality Hackweek] Terrain Brush Size value is not serialized after deselecting the terrain when using the first instance of multiple Inspectors
Resolution Note:
When changing a property on a Prefab instance from script it is important to get it recorded as an override. Otherwise it will not be persisted. And that is the problem happening here: when entering Playmode the scene is reloaded and will lose its changes because RecordPrefabInstancePropertyModifications was not called. To fix this issue in the repro project do this:
private void OnPlayModeChanged(PlayModeStateChange stateChange) {
switch (stateChange) {
case PlayModeStateChange.ExitingEditMode:
playButtonTime = DateTime.Now.Ticks;
PrefabUtility.RecordPrefabInstancePropertyModifications(this); <--- ADD THIS