From e5af9b5b36296d85a881775b0c02d195e092f62a Mon Sep 17 00:00:00 2001 From: VetleNeumann Date: Wed, 23 Jul 2025 16:15:45 +0200 Subject: [PATCH 1/3] Fix Package Manager loading wheel spinning around wrong center --- Editor/Core/UIElements/LoadingSpinner.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Editor/Core/UIElements/LoadingSpinner.cs b/Editor/Core/UIElements/LoadingSpinner.cs index 15398ddb1..774b6cd07 100644 --- a/Editor/Core/UIElements/LoadingSpinner.cs +++ b/Editor/Core/UIElements/LoadingSpinner.cs @@ -30,7 +30,7 @@ public LoadingSpinner() private void UpdateProgress() { - transform.rotation = Quaternion.Euler(0, 0, m_Rotation); + innerElement.transform.rotation = Quaternion.Euler(0, 0, m_Rotation); m_Rotation += 3; if (m_Rotation > 360) m_Rotation -= 360; From 6eb2fc4864fcaf9a28435d540c7326a0dad1bed4 Mon Sep 17 00:00:00 2001 From: VetleNeumann Date: Wed, 23 Jul 2025 17:04:05 +0200 Subject: [PATCH 2/3] Fix package manager loading spinner for Unity 2018 --- Editor/Core/UIElements/LoadingSpinner.cs | 23 ++++++++++++++++++++++- UXML/PackageManager/PackageSource.uss | 1 - 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/Editor/Core/UIElements/LoadingSpinner.cs b/Editor/Core/UIElements/LoadingSpinner.cs index 774b6cd07..4457decf0 100644 --- a/Editor/Core/UIElements/LoadingSpinner.cs +++ b/Editor/Core/UIElements/LoadingSpinner.cs @@ -25,12 +25,20 @@ public LoadingSpinner() innerElement = new VisualElement(); innerElement.AddToClassList("loading-spinner"); innerElement.AddToClassList("hidden"); + SetLoadingSpinnerBackground(); + Add(innerElement); } private void UpdateProgress() { - innerElement.transform.rotation = Quaternion.Euler(0, 0, m_Rotation); + var rotation = Quaternion.Euler(0, 0, m_Rotation); +#if UNITY_2019_1_OR_NEWER + innerElement.transform.rotation = rotation; +#else + this.transform.rotation = rotation; +#endif + m_Rotation += 3; if (m_Rotation > 360) m_Rotation -= 360; @@ -59,5 +67,18 @@ public void Stop() started = false; innerElement.AddToClassList("hidden"); } + + private void SetLoadingSpinnerBackground() + { + // Unity 2019.1+ includes this as a loaded resource, but in earlier versions + // we need to load it from the Unity Package Manager package's resources. +#if UNITY_2019_1_OR_NEWER + innerElement.style.backgroundImage = new StyleBackground( + (Texture2D)EditorGUIUtility.Load("icons/packagemanager/dark/loading.png") + ); +#else + innerElement.style.backgroundImage = AssetDatabase.LoadAssetAtPath("Packages/com.unity.package-manager-ui/Editor/Resources/Images/Dark/loading.png"); +#endif + } } } diff --git a/UXML/PackageManager/PackageSource.uss b/UXML/PackageManager/PackageSource.uss index 925247385..5b78b4aec 100644 --- a/UXML/PackageManager/PackageSource.uss +++ b/UXML/PackageManager/PackageSource.uss @@ -10,7 +10,6 @@ LoadingSpinner{ } .loading-spinner { - background-image: resource("icons/packagemanager/dark/loading.png"); top: -8px; left: -8px; width: 16px; From 4c01c991e8f568d48d7a5a41e997a3ca43481f1d Mon Sep 17 00:00:00 2001 From: VetleNeumann Date: Thu, 24 Jul 2025 02:13:04 +0200 Subject: [PATCH 3/3] Make LoadingSpinner rotation uniform accross versions --- Editor/Core/UIElements/LoadingSpinner.cs | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/Editor/Core/UIElements/LoadingSpinner.cs b/Editor/Core/UIElements/LoadingSpinner.cs index 4457decf0..9b331ce0b 100644 --- a/Editor/Core/UIElements/LoadingSpinner.cs +++ b/Editor/Core/UIElements/LoadingSpinner.cs @@ -25,6 +25,13 @@ public LoadingSpinner() innerElement = new VisualElement(); innerElement.AddToClassList("loading-spinner"); innerElement.AddToClassList("hidden"); +#if UNITY_2021_2_OR_NEWER + // In Unity 2021.2 and later, transform origin of elements changed from + // top-left to center by default. + // https://discussions.unity.com/t/introducing-transform-styles/861646 + // To maintain the same behavior as before, we set the transform origin to top-left. + style.transformOrigin = new TransformOrigin(Length.Percent(0), Length.Percent(0), 0); +#endif SetLoadingSpinnerBackground(); Add(innerElement); @@ -32,12 +39,7 @@ public LoadingSpinner() private void UpdateProgress() { - var rotation = Quaternion.Euler(0, 0, m_Rotation); -#if UNITY_2019_1_OR_NEWER - innerElement.transform.rotation = rotation; -#else - this.transform.rotation = rotation; -#endif + transform.rotation = Quaternion.Euler(0, 0, m_Rotation); m_Rotation += 3; if (m_Rotation > 360)