Skip to content

SceneGuidRegistry being updated on every build/playModeStateChanged #18

@ahmed-shariff

Description

@ahmed-shariff

Every time the editor enters playmode, the SceneGuidRegistry object gets updated. This is more of a QoL issue, particularly when using git to track changes - the scene would show changes even when nothing has been modified. The issue seems to stem from GuidRegistryUpdater.UpdateScenesGuidRegistry in the Unity-Runtime-GUID package. The order of the objects returned by unity is not the same each time, which results in the above behaviour. A simple fix is to order the scene objects after querying the scene before updating/validating the SceneGuidRegistry:

diff --git a/Editor/GuidRegistryUpdater.cs b/Editor/GuidRegistryUpdater.cs
index f86f64f..17f5024 100644
--- a/Editor/GuidRegistryUpdater.cs
+++ b/Editor/GuidRegistryUpdater.cs
@@ -148,6 +148,10 @@ namespace UnityRuntimeGuid.Editor
                 sceneObjects.AddRange(EditorUtility.CollectDependencies(scene.GetRootGameObjects())
                     .Where(dependency => dependency != null));
 
+                // The order of the objects added is not the same everytime sceneObjects is populated.
+                // This prevents the SceneGuidRegistry being updated at each bild/playModeStateChanged.
+                sceneObjects = sceneObjects.OrderBy(o => o.GetHashCode()).ToList();
+
                 foreach (var sceneObject in sceneObjects.Where(sceneObject => !IsAsset(sceneObject)))
                 {
                     if (sceneObject.GetType().Namespace == typeof(UnityEditor.Editor).Namespace)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions