Search Unity

Official What's new for Prefabs in 2022.2?

Discussion in 'Prefabs' started by Mads-Nyholm, Nov 22, 2022.

  1. Mads-Nyholm


    Unity Technologies

    Aug 19, 2013
    Hi everyone,

    It’s time for an update from the Scene Management team and the work we have been doing on Prefabs. During the last few releases, and after fixing a large number of bugs you’ve reported (thank you!), we’ve made several improvements to the Prefab system.

    Our article What’s new for Prefabs in 2022.2? will show the improvements introduced in 2022.2 and how these updates can benefit you.

    In this article, we'll be covering:
    • Replace Prefab Asset for Prefab instance
    • Reorder added GameObjects and components
    • Delete GameObjects from Prefab instances
    • Explore improved override tooling
    Many of the new features have been requested by you and we hope they will be welcome additions to the existing Prefab workflows.

    Questions, comments, and suggestions are all welcome.
    detzt, M_MG_S, msfredb7 and 12 others like this.
  2. JesOb


    Sep 3, 2012
    Thanks a lot, those are really amazing helpful additions :)

    Can you say something about another long-awaited feature: Prefab Exposed Properties. So we can disable any override and allow overriding only some explicitly marked properties from prefab hierarchy and show all of them in prefab root inspector?
    NotaNaN likes this.
  3. Mads-Nyholm


    Unity Technologies

    Aug 19, 2013
    Hi Jes,
    I hate to be the bearer of bad news: we have worked on a prototype for encapsulation and exposed properties but have decided to shelf it for the time being due to new priorities. That said, the idea is not abandoned.
    JesOb likes this.
  4. makaka-org


    Dec 1, 2013
    Unity continues to follow the path of replacing popular plugins with built-in tools. Thank you
    Marc-Saubion, nehvaleem and Niter88 like this.
  5. michalpiatek


    Feb 26, 2021
    Really good we finally have an option to replace a prefab instance. I've always had to make a custom tool for this for no good reason. Being able to see inheritance tree for variants? Great! Next step: adding a dependency tree tool for viewing all asset relationships.

    Good improvements, thanks!
    kvfreedom and Wattosan like this.
  6. omer1615


    Jul 2, 2014
    Am I the only one having trouble watching blog post videos that hosted in Untity's own server?
    mahdi_jeddi likes this.
  7. makaka-org


    Dec 1, 2013
    I have the video issues too.
  8. koirat


    Jul 7, 2012
    For years we had problems with inserting a new prefab in the middle of prefabs variants inheritance chain.
    Was this issue addressed ?
  9. Kleptine


    Dec 23, 2013
    I have no need for exposed properties, but some form of locking in the scene view would be incredible. The number of times someone on the team accidentally adds an override to a prefab is incredibly high. One of our biggest sources of level design bugs.
  10. KimmoFactor


    Dec 29, 2020
    First of all, this is a great update. But also, I noticed the blog post mentions "major refactoring of the Undo system". My latest 2022.1 editor crashes nowadays daily deep in some undo internals randomly. Didn't use to do that before jumping to 2022.1. So if at all related, I really hope you can devote some serious time now to get the undo bugs worked out too. There's been way too many lately. I can't really make a reliable bug report of this as it's so random, but here's some example stack traces under spoiler tags. (There's also the undo bugs ones already in the issue system, like undo getting child ordering wrong etc. which need a lot of love.)

    Code (csharp):
    2. Received signal SIGSEGV
    3. Obtained 15 stack frames
    4. 0x00007ff780843614 (Unity) tlsf_free
    5. 0x00007ff77e69937e (Unity) DynamicHeapAllocator::Deallocate
    6. 0x00007ff77e6a7860 (Unity) DualThreadAllocator<DynamicHeapAllocator>::TryDeallocate
    7. 0x00007ff77e699b12 (Unity) MemoryManager::Deallocate
    8. 0x00007ff77e6a272a (Unity) free_alloc_internal
    9. 0x00007ff77fccec33 (Unity) UndoManager::RegisterUndoOperation
    10. 0x00007ff77fcce77f (Unity) UndoManager::RegisterUndoInternal
    11. 0x00007ff77fcce586 (Unity) UndoManager::RegisterUndo
    12. 0x00007ff77fcb6d56 (Unity) PropertyUndoManager::Flush
    13. 0x00007ff77f980fb9 (Unity) Application::TickTimer
    14. 0x00007ff77fde759a (Unity) MainMessageLoop
    15. 0x00007ff77fdec3b4 (Unity) WinMain
    16. 0x00007ff78116448e (Unity) __scrt_common_main_seh
    17. 0x00007ffa07c874b4 (KERNEL32) BaseThreadInitThunk
    18. 0x00007ffa07f626a1 (ntdll) RtlUserThreadStart
    20. called a function with an invalid parameter
    21. Obtained 21 stack frames
    22. 0x00007ff71264f9fd (Unity) StackWalker::GetCurrentCallstack
    23. 0x00007ff7126566f9 (Unity) StackWalker::ShowCallstack
    24. 0x00007ff7135f1943 (Unity) GetStacktrace
    25. 0x00007ff712655736 (Unity) winutils::PrintStackTrace
    26. 0x00007ff71264eb21 (Unity) winutils::CrashHandler::DefaultInvalidParameterHandler
    27. 0x00007ff7149a28d1 (Unity) invalid_parameter_internal
    28. 0x00007ff7149a2826 (Unity) invalid_parameter
    29. 0x00007ff7149a2979 (Unity) invalid_parameter_noinfo_noreturn
    30. 0x00007ff7134d343f (Unity) UndoBase::~UndoBase
    31. 0x00007ff7134d3654 (Unity) UndoBase::`vector deleting destructor'
    32. 0x00007ff7134dbff0 (Unity) UndoManager::PopFrontIfExceedsLimit
    33. 0x00007ff7134deba5 (Unity) UndoManager::RegisterUndoOperation
    34. 0x00007ff7134de77f (Unity) UndoManager::RegisterUndoInternal
    35. 0x00007ff7134de586 (Unity) UndoManager::RegisterUndo
    36. 0x00007ff7134c6d56 (Unity) PropertyUndoManager::Flush
    37. 0x00007ff713190fb9 (Unity) Application::TickTimer
    38. 0x00007ff7135f759a (Unity) MainMessageLoop
    39. 0x00007ff7135fc3b4 (Unity) WinMain
    40. 0x00007ff71497448e (Unity) __scrt_common_main_seh
    41. 0x00007ffa07c874b4 (KERNEL32) BaseThreadInitThunk
    42. 0x00007ffa07f626a1 (ntdll) RtlUserThreadStart
    44. Received signal SIGSEGV
    45. Obtained 11 stack frames
    46. 0x00007ff6713b77ab (Unity) core::StringStorageDefault<char>::assign
    47. 0x00007ff6730ca85d (Unity) UndoManager::GetPriorityName
    48. 0x00007ff6730d1072 (Unity) UndoManager::UpdateUndoName
    49. 0x00007ff672d6dd0a (Unity) PlayerLoopController::ExitPlayMode
    50. 0x00007ff672d7d784 (Unity) PlayerLoopController::SetIsPlaying
    51. 0x00007ff672d80e80 (Unity) Application::TickTimer
    52. 0x00007ff6731e759a (Unity) MainMessageLoop
    53. 0x00007ff6731ec3b4 (Unity) WinMain
    54. 0x00007ff67456448e (Unity) __scrt_common_main_seh
    55. 0x00007ffad6f774b4 (KERNEL32) BaseThreadInitThunk
    56. 0x00007ffad71426a1 (ntdll) RtlUserThreadStart
    58. Received signal SIGSEGV
    59. Obtained 117 stack frames
    60. 0x00007ff6730c6b03 (Unity) UndoManager::ClearUndoSceneHandle
    61. 0x00007ff673063df7 (Unity) EditorSceneManager::ClosePreviewScene
    62. 0x00007ff6716ea53f (Unity) EditorSceneManager_CUSTOM_ClosePreviewScene_Injected
    63. 0x000001c73a01c00a (Mono JIT Code) (wrapper managed-to-native) UnityEditor.SceneManagement.EditorSceneManager:ClosePreviewScene_Injected (UnityEngine.SceneManagement.Scene&)
    64. 0x000001c73a01bf33 (Mono JIT Code) UnityEditor.SceneManagement.EditorSceneManager:ClosePreviewScene (UnityEngine.SceneManagement.Scene)
    65. 0x000001c73a01bdd3 (Mono JIT Code) UnityEditor.PreviewScene:Dispose ()
    66. 0x000001c73a01bd33 (Mono JIT Code) UnityEditor.PreviewRenderUtility:Cleanup ()
    67. 0x000001c73a01bc23 (Mono JIT Code) UnityEditor.Texture3DPreview:OnDisable ()
    68. 0x000001c3cf669018 (Mono JIT Code) (wrapper runtime-invoke) object:runtime_invoke_void__this__ (object,intptr,intptr,intptr)
    69. 0x00007ffa0fe30384 (mono-2.0-bdwgc) [mini-runtime.c:3445] mono_jit_runtime_invoke
    70. 0x00007ffa0fd6eb34 (mono-2.0-bdwgc) [object.c:3066] do_runtime_invoke
    71. 0x00007ffa0fd6eccc (mono-2.0-bdwgc) [object.c:3113] mono_runtime_invoke
    72. 0x00007ff672163f14 (Unity) scripting_method_invoke
    73. 0x00007ff672143864 (Unity) ScriptingInvocation::Invoke
    74. 0x00007ff67214394e (Unity) ScriptingInvocation::InvokeChecked
    75. 0x00007ff6721d8d66 (Unity) SerializableManagedRef::CallMethod
    76. 0x00007ff67213db7f (Unity) MonoBehaviour::WillDestroyComponent
    77. 0x00007ff671df1f6b (Unity) DestroyObjectHighLevel_Internal
    78. 0x00007ff671df1bc4 (Unity) DestroyObjectHighLevel
    79. 0x00007ff67214226e (Unity) Scripting::DestroyObjectFromScriptingImmediate
    80. 0x00007ff671356364 (Unity) Object_CUSTOM_DestroyImmediate
    81. 0x000001c3ce5e0625 (Mono JIT Code) (wrapper managed-to-native) UnityEngine.Object:DestroyImmediate (UnityEngine.Object,bool)
    82. 0x000001c3ce5e0563 (Mono JIT Code) UnityEngine.Object:DestroyImmediate (UnityEngine.Object)
    83. 0x000001c73a01b93b (Mono JIT Code) UnityEditor.TextureInspector:OnDisable ()
    84. 0x000001c3cf669018 (Mono JIT Code) (wrapper runtime-invoke) object:runtime_invoke_void__this__ (object,intptr,intptr,intptr)
    85. 0x00007ffa0fe30384 (mono-2.0-bdwgc) [mini-runtime.c:3445] mono_jit_runtime_invoke
    86. 0x00007ffa0fd6eb34 (mono-2.0-bdwgc) [object.c:3066] do_runtime_invoke
    87. 0x00007ffa0fd6eccc (mono-2.0-bdwgc) [object.c:3113] mono_runtime_invoke
    88. 0x00007ff672163f14 (Unity) scripting_method_invoke
    89. 0x00007ff672143864 (Unity) ScriptingInvocation::Invoke
    90. 0x00007ff67214394e (Unity) ScriptingInvocation::InvokeChecked
    91. 0x00007ff6721d8d66 (Unity) SerializableManagedRef::CallMethod
    92. 0x00007ff67213db7f (Unity) MonoBehaviour::WillDestroyComponent
    93. 0x00007ff671df1f6b (Unity) DestroyObjectHighLevel_Internal
    94. 0x00007ff671df1bc4 (Unity) DestroyObjectHighLevel
    95. 0x00007ff67214226e (Unity) Scripting::DestroyObjectFromScriptingImmediate
    96. 0x00007ff671356364 (Unity) Object_CUSTOM_DestroyImmediate
    97. 0x000001c3ce5e0625 (Mono JIT Code) (wrapper managed-to-native) UnityEngine.Object:DestroyImmediate (UnityEngine.Object,bool)
    98. 0x000001c3ce5e0563 (Mono JIT Code) UnityEngine.Object:DestroyImmediate (UnityEngine.Object)
    99. 0x000001c41aefa33b (Mono JIT Code) UnityEditor.AssetPreviewUpdater:CreatePreview (UnityEngine.Object,UnityEngine.Object[],string,int,int)
    100. 0x000001c41aefa003 (Mono JIT Code) UnityEditor.AssetPreviewUpdater:CreatePreviewForAsset (UnityEngine.Object,UnityEngine.Object[],string)
    101. 0x000001c41aefa0c0 (Mono JIT Code) (wrapper runtime-invoke) <Module>:runtime_invoke_object_object_object_object (object,intptr,intptr,intptr)
    102. 0x00007ffa0fe30384 (mono-2.0-bdwgc) [mini-runtime.c:3445] mono_jit_runtime_invoke
    103. 0x00007ffa0fd6eb34 (mono-2.0-bdwgc) [object.c:3066] do_runtime_invoke
    104. 0x00007ffa0fd6eccc (mono-2.0-bdwgc) [object.c:3113] mono_runtime_invoke
    105. 0x00007ff672163f14 (Unity) scripting_method_invoke
    106. 0x00007ff672143864 (Unity) ScriptingInvocation::Invoke
    107. 0x00007ff6734c717c (Unity) MonoCreateAssetPreview
    108. 0x00007ff6734d18ca (Unity) MonoCreateAssetPreviewDontUnload
    109. 0x00007ff6734d46ff (Unity) PreviewTextureManager::UpdatePreviewIfDirty
    110. 0x00007ff6734cf1b5 (Unity) PreviewTextureManager::GetPreview
    111. 0x00007ff6719d3941 (Unity) AssetPreview_CUSTOM_GetAssetPreview
    112. 0x000001c41aebcc45 (Mono JIT Code) (wrapper managed-to-native) UnityEditor.AssetPreview:GetAssetPreview (int,int)
    113. 0x000001c41aebcb8b (Mono JIT Code) UnityEditor.AssetPreview:GetAssetPreview (int)
    114. 0x000001c41aebcb33 (Mono JIT Code) UnityEditor.AssetPreview:GetAssetPreview (UnityEngine.Object)
    115. 0x000001c73a01727b (Mono JIT Code) UnityEditor.EditorGUI:DrawObjectFieldLargeThumb (UnityEngine.Rect,int,UnityEngine.Object,UnityEngine.GUIContent)
    116. 0x000001c41aed5f4b (Mono JIT Code) UnityEditor.EditorGUI:DoObjectField (UnityEngine.Rect,UnityEngine.Rect,int,UnityEngine.Object,UnityEngine.Object,System.Type,System.Type,UnityEditor.SerializedProperty,UnityEditor.EditorGUI/ObjectFieldValidator,bool,UnityEngine.GUIStyle,UnityEngine.GUIStyle)
    117. 0x000001c41aed39cb (Mono JIT Code) UnityEditor.EditorGUI:DoObjectField (UnityEngine.Rect,UnityEngine.Rect,int,UnityEngine.Object,UnityEngine.Object,System.Type,UnityEditor.SerializedProperty,UnityEditor.EditorGUI/ObjectFieldValidator,bool,UnityEngine.GUIStyle)
    118. 0x000001c73a00787b (Mono JIT Code) UnityEditor.EditorGUI:DoObjectField (UnityEngine.Rect,UnityEngine.Rect,int,UnityEngine.Object,UnityEngine.Object,System.Type,UnityEditor.EditorGUI/ObjectFieldValidator,bool,UnityEngine.GUIStyle)
    119. 0x000001c73a007273 (Mono JIT Code) UnityEditor.MaterialEditor:TexturePropertyBody (UnityEngine.Rect,UnityEditor.MaterialProperty)
    120. 0x000001c73a0050e3 (Mono JIT Code) UnityEditor.MaterialEditor:TextureProperty (UnityEngine.Rect,UnityEditor.MaterialProperty,string,string,bool)
    121. 0x000001c73a004c8b (Mono JIT Code) UnityEditor.MaterialEditor:TextureProperty (UnityEngine.Rect,UnityEditor.MaterialProperty,string,bool)
    122. 0x000001c73a004bd3 (Mono JIT Code) UnityEditor.MaterialEditor:TextureProperty (UnityEngine.Rect,UnityEditor.MaterialProperty,string)
    123. 0x000001c73a00487b (Mono JIT Code) UnityEditor.MaterialEditor:DefaultShaderPropertyInternal (UnityEngine.Rect,UnityEditor.MaterialProperty,UnityEngine.GUIContent)
    124. 0x000001c73a0045d3 (Mono JIT Code) UnityEditor.MaterialEditor:ShaderPropertyInternal (UnityEngine.Rect,UnityEditor.MaterialProperty,UnityEngine.GUIContent)
    125. 0x000001c73a003ea3 (Mono JIT Code) UnityEditor.MaterialEditor:ShaderProperty (UnityEngine.Rect,UnityEditor.MaterialProperty,UnityEngine.GUIContent,int)
    126. 0x000001c73a00383b (Mono JIT Code) UnityEditor.MaterialEditor:ShaderProperty (UnityEditor.MaterialProperty,UnityEngine.GUIContent,int)
    127. 0x000001c73a00378b (Mono JIT Code) UnityEditor.MaterialEditor:ShaderProperty (UnityEditor.MaterialProperty,UnityEngine.GUIContent)
    128. 0x000001c73a003713 (Mono JIT Code) UnityEditor.MaterialEditor:ShaderProperty (UnityEditor.MaterialProperty,string)
    129. 0x000001c73a003663 (Mono JIT Code) [ShaderGraphPropertyDrawers.cs:284] UnityEditor.ShaderGraph.Drawing.ShaderGraphPropertyDrawers:DrawTexture2DProperty (UnityEditor.MaterialEditor,UnityEditor.MaterialProperty)
    130. 0x000001c73a00320b (Mono JIT Code) [ShaderGraphPropertyDrawers.cs:171] UnityEditor.ShaderGraph.Drawing.ShaderGraphPropertyDrawers:DrawMaterialProperty (UnityEditor.MaterialEditor,UnityEditor.MaterialProperty,UnityEditor.ShaderGraph.Internal.PropertyType,bool,UnityEditor.ShaderGraph.KeywordType)
    131. 0x000001c73a00285b (Mono JIT Code) [ShaderGraphPropertyDrawers.cs:98] UnityEditor.ShaderGraph.Drawing.ShaderGraphPropertyDrawers:DrawCategory (UnityEditor.MaterialEditor,System.Collections.Generic.IEnumerable`1<UnityEditor.MaterialProperty>,UnityEditor.ShaderGraph.MinimalCategoryData)
    132. 0x000001c73a0024bb (Mono JIT Code) [ShaderGraphPropertyDrawers.cs:72] UnityEditor.ShaderGraph.Drawing.ShaderGraphPropertyDrawers:DrawShaderGraphGUI (UnityEditor.MaterialEditor,System.Collections.Generic.IEnumerable`1<UnityEditor.MaterialProperty>,System.Collections.Generic.IEnumerable`1<UnityEditor.ShaderGraph.MinimalCategoryData>)
    133. 0x000001c73a001843 (Mono JIT Code) [ShaderGraphPropertyDrawers.cs:33] UnityEditor.ShaderGraph.Drawing.ShaderGraphPropertyDrawers:DrawShaderGraphGUI (UnityEditor.MaterialEditor,System.Collections.Generic.IEnumerable`1<UnityEditor.MaterialProperty>)
    134. 0x000001c73a0016b3 (Mono JIT Code) [BaseShaderGUI.cs:286] UnityEditor.BaseShaderGUI:DrawShaderGraphProperties (UnityEngine.Material,System.Collections.Generic.IEnumerable`1<UnityEditor.MaterialProperty>)
    135. 0x000001c73a001633 (Mono JIT Code) [ShaderGraphUnlitGUI.cs:37] UnityEditor.ShaderGraphUnlitGUI:DrawSurfaceInputs (UnityEngine.Material)
    136. 0x000001c739ff9c2c (Mono JIT Code) [MaterialHeaderScopeList.cs:68] UnityEditor.Rendering.MaterialHeaderScopeList:DrawHeaders (UnityEditor.MaterialEditor,UnityEngine.Material)
    137. 0x000001c739ff9a4b (Mono JIT Code) [BaseShaderGUI.cs:272] UnityEditor.BaseShaderGUI:ShaderPropertiesGUI (UnityEngine.Material)
    138. 0x000001c739ff6ddb (Mono JIT Code) [BaseShaderGUI.cs:247] UnityEditor.BaseShaderGUI:OnGUI (UnityEditor.MaterialEditor,UnityEditor.MaterialProperty[])
    139. 0x000001c739ff5aa0 (Mono JIT Code) UnityEditor.MaterialEditor:PropertiesGUI ()
    140. 0x000001c739ff50f3 (Mono JIT Code) UnityEditor.MaterialEditor:OnInspectorGUI ()
    141. 0x000001c41aec7b74 (Mono JIT Code) UnityEditor.UIElements.InspectorElement/<>c__DisplayClass62_0:<CreateIMGUIInspectorFromEditor>b__0 ()
    142. 0x000001c57db5829f (Mono JIT Code) UnityEngine.UIElements.IMGUIContainer:DoOnGUI (UnityEngine.Event,UnityEngine.Matrix4x4,UnityEngine.Rect,bool,UnityEngine.Rect,System.Action,bool)
    143. 0x000001c57dc1e0bb (Mono JIT Code) UnityEngine.UIElements.IMGUIContainer:HandleIMGUIEvent (UnityEngine.Event,UnityEngine.Matrix4x4,UnityEngine.Rect,System.Action,bool)
    144. 0x000001c57dc1be0b (Mono JIT Code) UnityEngine.UIElements.IMGUIContainer:DoIMGUIRepaint ()
    145. 0x000001c57dc1a21c (Mono JIT Code) UnityEngine.UIElements.UIR.RenderChainCommand:ExecuteNonDrawMesh (UnityEngine.UIElements.UIR.DrawParams,single,System.Exception&)
    146. 0x000001c57dc188c3 (Mono JIT Code) UnityEngine.UIElements.UIR.UIRenderDevice:EvaluateChain (UnityEngine.UIElements.UIR.RenderChainCommand,UnityEngine.Material,UnityEngine.Material,UnityEngine.Texture,UnityEngine.Texture,single,Unity.Collections.NativeSlice`1<UnityEngine.UIElements.UIR.Transform3x4>,Unity.Collections.NativeSlice`1<UnityEngine.Vector4>,UnityEngine.MaterialPropertyBlock,bool,System.Exception&)
    147. 0x000001c57dc15283 (Mono JIT Code) UnityEngine.UIElements.UIR.RenderChain:Render ()
    148. 0x000001c57db7b9c3 (Mono JIT Code) UnityEngine.UIElements.UIRRepaintUpdater:Update ()
    149. 0x000001c57db0d42e (Mono JIT Code) UnityEngine.UIElements.VisualTreeUpdater:UpdateVisualTreePhase (UnityEngine.UIElements.VisualTreeUpdatePhase)
    150. 0x000001c57db0d33b (Mono JIT Code) UnityEngine.UIElements.Panel:UpdateForRepaint ()
    151. 0x000001c57db0b71b (Mono JIT Code) UnityEngine.UIElements.Panel:Repaint (UnityEngine.Event)
    152. 0x000001c57db0a87c (Mono JIT Code) UnityEngine.UIElements.UIElementsUtility:DoDispatch (UnityEngine.UIElements.BaseVisualElementPanel)
    153. 0x000001c57db0a523 (Mono JIT Code) UnityEngine.UIElements.UIElementsUtility:UnityEngine.UIElements.IUIElementsUtility.ProcessEvent (int,intptr,bool&)
    154. 0x000001c57db0a2df (Mono JIT Code) UnityEngine.UIElements.UIEventRegistration:ProcessEvent (int,intptr)
    155. 0x000001c57db0a1fb (Mono JIT Code) UnityEngine.UIElements.UIEventRegistration/<>c:<.cctor>b__1_2 (int,intptr)
    156. 0x000001c57db0a04d (Mono JIT Code) UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)
    157. 0x000001c57db0a106 (Mono JIT Code) (wrapper runtime-invoke) <Module>:runtime_invoke_void_int_intptr_intptr& (object,intptr,intptr,intptr)
    158. 0x00007ffa0fe30384 (mono-2.0-bdwgc) [mini-runtime.c:3445] mono_jit_runtime_invoke
    159. 0x00007ffa0fd6eb34 (mono-2.0-bdwgc) [object.c:3066] do_runtime_invoke
    160. 0x00007ffa0fd6eccc (mono-2.0-bdwgc) [object.c:3113] mono_runtime_invoke
    161. 0x00007ff672163f14 (Unity) scripting_method_invoke
    162. 0x00007ff672143864 (Unity) ScriptingInvocation::Invoke
    163. 0x00007ff67213e485 (Unity) ScriptingInvocation::Invoke<void>
    164. 0x00007ff6722896ba (Unity) Scripting::UnityEngine::GUIUtilityProxy::ProcessEvent
    165. 0x00007ff672c512b8 (Unity) GUIView::ProcessRetainedMode
    166. 0x00007ff673211ff3 (Unity) GUIView::OnInputEvent
    167. 0x00007ff672c510c5 (Unity) GUIView::ProcessInputEvent
    168. 0x00007ff67320ab9d (Unity) GUIView::DoPaint
    169. 0x00007ff673213fcc (Unity) GUIView::RepaintAll
    170. 0x00007ff672d82c8e (Unity) PlayerLoopController::UpdateScene
    171. 0x00007ff672d80bf2 (Unity) Application::TickTimer
    172. 0x00007ff6731e759a (Unity) MainMessageLoop
    173. 0x00007ff6731ec3b4 (Unity) WinMain
    174. 0x00007ff67456448e (Unity) __scrt_common_main_seh
    175. 0x00007ffad6f774b4 (KERNEL32) BaseThreadInitThunk
    176. 0x00007ffad71426a1 (ntdll) RtlUserThreadStart
    Last edited: Nov 30, 2022
  11. Niter88


    Jul 24, 2019
    That's why we have LTS
  12. evyatron


    Jul 20, 2014
    +1 this - it's super important, and becomes more and more so as the team and project sizes scale. Not to mention how useful it would be in UI as well.

    The other changes are great too, but "locking a prefab to prevent overrides" is one of the biggest pain points I found.
    masterton and JesOb like this.
  13. TJHeuvel-net


    Jul 31, 2012
    Can we change a prefab parent?

    Not being able to modify the hierarchy after making it really makes iterating impossible.
    detzt and Marc-Saubion like this.
  14. Stardog


    Jun 28, 2010
    Great update!

    It would be nice to have the option to allow prefab replacements to match the scale of the objects.
  15. IAndrewNovak


    Nov 29, 2013

    Am I the only one who finds the position of the main buttons very strange and inconvenient?

    I think the popularity of buttons has this order: Open > Select > Overrides. Also most of the time we have inspector window on the right side of the screen so for the most used operation (Open) I need to move the cursor very far and pixel hunting button.


    What I suggest
    euden_one and TJHeuvel-net like this.
  16. howardmealor


    Unity Technologies

    May 21, 2021
    Hi @Stardog

    Could you provide some detail for the option to allow prefab replacements to match the scale of the objects?
    A scenario in which you'd use it and how the UI might best support it would be super helpful.

  17. WilliamReynish


    Unity Technologies

    Jan 6, 2022

    Hi Andrew. Thanks for the feedback. You have a point, but here's why we went with the current layout:

    - In Unity, all the 'Open' buttons for assets are in the lower right of the inspector header. So keeping it consistent is a goal.
    - This button acts essentially as a CTA (call to action). The standard place for those are in the bottom right.
    - The parts of the screen that are easiest to reach follow Fitts' law. The points on the screen that are easiest to hit are, counter intuitively, in the corners. Of course this open button is not exactly in the screen corner though.

    Keep in mind that this open button here is not the only way to open a prefab for editing - you can also click the chevron on the Hierarchy, among other ways.

    But here's what I think we could & should do: I think what many users would like, is a way to do many operations, such as opening a Prefab and other things, directly in the Scene window. Without announcing anything just yet, I think you might see that happening, and when that is true, the amount of cursor movement needed to open a given Prefab will be smaller than ever.
  18. IAndrewNovak


    Nov 29, 2013
    Thanks for the feedback. I understand your logic but I think that the open button is an old design decision that needs to be replaced with a solution for this time. Perhaps when this button appeared, there were no thoughts about a new prefab system.
    I click the Open button (the lower right of the inspector header) only few times for 6 years of work in Unity.
    Will be interest to have some analytic for this button.

    I hope in the future Unity team adds an option to change buttons positions for comfort using prefabs from Inspector people like me.

    Have a nice day :)
  19. Mads-Nyholm


    Unity Technologies

    Aug 19, 2013
    Regarding Variant inheritance refactoring: see my answer here:
    TJHeuvel-net likes this.
  20. Niter88


    Jul 24, 2019
    Yes. I can't see a problem with it. I actually use just the Override option, I like it close.
  21. unityThreye4


    Feb 2, 2023
    Hi, I am late to the discussion.

    Can anyone please suggest a plugin for the "Prefab Replace" feature?
  22. makaka-org


    Dec 1, 2013
    I tested with Unity 2022.3 LTS. There is a native replacing mechanics.

    I didn't remember exactly how I did it, But I guess I opened the target prefab and replaced the root of the prefab using a new prefab...
  23. joshua_baldwin_unity


    Jan 26, 2023
    Hi, our project is on 2020.3.30f1 and we have prefabs/variants like the following:
    Original Prefab

    Prefab variant

    Upon upgrading to 2022.3.10f1 the prefab variant becomes this:

    Prefab Variant


    Looking at the prefab file in the updated version I noticed if I move around the children of the prefab variant, a block of code is added that determines the item's position (insertIndex).

    Because this block of code didn't exist in previous versions, upon update it seems objects added to prefab variants default to being the last in the hierarchy. Also, I noticed the "insertIndex" parameter seems to take priority over m_RootOrder.
    This is a problem because the rendering order of the objects matter for our project. Is there any way to avoid added objects defaulting to the last position? Going through the project to find all instances of prefab variants and prefab variants within other prefab variants etc. will be very time consuming and inefficient. Any help would be very much appreciated!
  24. Stardog


    Jun 28, 2010
    They updated prefabs at some point to support reordering children. Maybe it only moves to last when converting your older prefabs.
  25. joshua_baldwin_unity


    Jan 26, 2023
    Thank you for the response. I realize that the update to prefabs is what's causing this to happen, but I wanted to know if there was a way to fix this, or prevent this from happening in the first place.