Search Issue Tracker
By Design
Votes
0
Found in
6000.0.37f1
6000.1.0b5
6000.2.0a3
Issue ID
UUM-96978
Regression
No
Undo does not revert anchor preset changes when multiple UI elements are modified at once
Reproduction steps:
1. Open the attached “repro_IN-94627“ project
2. Open the “Assets/Scenes/TestingScenes.unity“ Scene
3. In the Hierarchy, expand the “Canvas → Panel → Image → AudioSettings → Sliders“ GameObject
4. Select all three child GameObjects (“MasterSlider“, “MusicSlider“, “SFXSlider“) at once
5. In the Inspector, in the “Rect Transform” Component, press on the anchor point selection
6. While holding the “Alt“ button on your keyboard, select the anchor point in the middle
7. In the Scene view, observe multiple sliders merging into a single slider
8. Press the “Ctrl + Z“ button combination on your keyboard or select “Undo“ (“Edit → Undo“) in the Editor menu
9. Observe the sliders in the Scene view
Expected result: Previous changes to the sliders are successfully reversed and multiple sliders appear again
Actual result: Previous changes to the sliders are not reversed and a single slider stays visible
Reproducible with: 6000.0.37f1, 6000.1.0b5, 6000.2.0a3
Couldn’t test with: 2022.3.57f1 - Consistent crash when opening the “TestingScene.unity“ Scene
Reproducible on: Windows 10 (22H2)
Not reproducible on: No other environments tested
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
- Crash on ResizeScriptingList<ScriptingObjectPtr> when passing an undeclared variable to the results parameter for GameObject.FindGameObjectsWithTag
- [Android] "Screen.safeArea.y" always returns values outside of the Safe Area when the device is in Portrait orientation
- Frame spike due to many TreeRenderer.TreeUpdated calls when repositioning terrains in large Scenes
- Crash on GameObject::RemoveComponentFromGameObjectInternal when reparenting Text GameObjects
- [IL2CPP-GarbageCollector] Changing GCMode might permanently disable GC in a multithreaded context
Resolution Note:
This is because the sliders are parented to a HorizontalLayoutGroup.
When a layout group like HorizontalLayoutGroup is applied, it uses Unity's Driven RectTransform Tracker internally. This tracker ensures that the layout component has full control over the rect transform properties. These properties are dynamically adjusted based on the layout group settings.
Because the layout group continuously drives and overrides the RectTransform properties (even at runtime), modifying these properties manually in the Inspector or through code doesn't persist. Essentially, any manual changes to these fields are invalid, as they'll be reset almost immediately by the layout group. For this reason, Unity disables Undo/Redo for these changes, since there's no meaningful way to "record" or "reapply" manual changes to properties controlled by the layout system.