Transform Handle/Gizmo disappears only in playmode

Really reached the end of my rope here, typically my google fu is pretty good but I am at a total loss for this one. For some reason, when starting playmode, the core SceneView transform gizmo/handle/tool when selecting an object stops appearing visually and its super annoying. It’s still there, if I click in the right place I can still move the object around, it’s just invisible and I can’t see it. When I exit playmode it comes back. It wasn’t always like this but its been like this a long time now. The issue seems to be project bound, as my other projects on this Unity version do not have this issue. Here’s a list of everything I’ve tried.

  • Changing local/global tool position settings
  • Resetting my editor layout through Windows->Layouts->Default Layout
  • Changing UnityEditor.Tools.Hidden on and off (its off by default)
  • Updating my Unity version (On 2022.3.48 but I’m somewhat sure the issue has been present since around 2022.3.0)
  • Deleting Library folder and reimporting

Open to suggestions here. Maybe I just need to file a bug report?

Well, don’t I feel a fool. After dealing with this issue for like 6 months and really aggressively trying to get to the bottom of it today for hours, I finally found the issue. Thought it was a Unity bug but it was my fault. (Isn’t that always how it goes), though in some ways it was obvious and other ways it was not.

For anyone in the future that may be dealing with this, here’s what I did wrong and may be a potential fix for you. I wrote a script a long time ago that added a few things to the scene view, some extra text and buttons via subscribing to SceneView.duringSceneGui and calling Handles.BeginGUI(). The problem started because the code calls Handles.BeginGUI(), but didn’t call Handles.EndGUI(), as the method had a check to see if the game was playing, and if so, returned before it hit that point. So that’s why for me this issue was only present during playmode.

So bear in mind, if you use Handles.BeginGUI(), you must call Handles.EndGUI() before leaving the method or else the SceneView tools will break and/or disappear. Hope this helps someone someday.