Skip to content

Commit c2af15c

Browse files
committed
Try to improve initialization being slower in Unity 2022
1 parent 49a5c7f commit c2af15c

File tree

1 file changed

+32
-2
lines changed

1 file changed

+32
-2
lines changed

Editor/WorldDebugger.cs

+32-2
Original file line numberDiff line numberDiff line change
@@ -2779,6 +2779,8 @@ private void RefreshBuild()
27792779
[NonSerialized] private bool initDone;
27802780
[NonSerialized] private bool buildReportInitDone;
27812781

2782+
[SerializeField] private bool firstRefresh = true;
2783+
27822784
[SerializeField] private MessageCategoryList masterList;
27832785

27842786
[SerializeField] private MessageCategory general;
@@ -2882,7 +2884,11 @@ private void Refresh()
28822884

28832885
CheckTime.Stop();
28842886

2885-
if (CheckTime.ElapsedMilliseconds >= 500)
2887+
if (firstRefresh)
2888+
{
2889+
firstRefresh = false;
2890+
}
2891+
else if (CheckTime.ElapsedMilliseconds >= 500)
28862892
{
28872893
autoRecheck = false;
28882894
}
@@ -2924,6 +2930,10 @@ private enum ProjectType
29242930
}
29252931

29262932
private ProjectType projectType = ProjectType.NotDetected;
2933+
2934+
// This is used to delay when the first scene check happens since for some reason
2935+
// doing it too early in Unity 2022 causes noticeable lag especially in bigger scenes
2936+
private static readonly Stopwatch InitializationDelayTimer = new();
29272937

29282938
private void OnGUI()
29292939
{
@@ -2932,7 +2942,19 @@ private void OnGUI()
29322942
if (current.type == EventType.Layout)
29332943
{
29342944
InitWhenNeeded();
2935-
Refresh();
2945+
if (!firstRefresh)
2946+
{
2947+
Refresh();
2948+
}
2949+
else
2950+
{
2951+
InitializationDelayTimer.Start();
2952+
if (InitializationDelayTimer.ElapsedMilliseconds >= 500)
2953+
{
2954+
InitializationDelayTimer.Stop();
2955+
Refresh();
2956+
}
2957+
}
29362958
}
29372959

29382960
DrawBuildReportOverviews(current);
@@ -3024,6 +3046,14 @@ private void MessagesTab()
30243046

30253047
GUILayout.FlexibleSpace();
30263048
}
3049+
else if (firstRefresh)
3050+
{
3051+
GUILayout.FlexibleSpace();
3052+
3053+
EditorGUILayout.LabelField("Loading...", Styles.CenteredLabel, GUILayout.ExpandWidth(true), GUILayout.Height(20));
3054+
3055+
GUILayout.FlexibleSpace();
3056+
}
30273057
else
30283058
{
30293059
if (!autoRecheck && GUILayout.Button("Refresh"))

0 commit comments

Comments
 (0)