你在图像中看到的是一个系统,它实现了与uGUI中自动导航类似的功能,但针对的是UI Toolkit。这个系统还包含了自动动态遮挡(也适用于滚动视图、屏幕外等情况,并且有无效选择解决方案)。

我为什么构建这个?因为默认的UI Toolkit导航相当有限,它只会在严格的直线范围内向上/下/左/右扫描。如果按钮稍微偏离,就无法找到。这不是配置问题,而是其实现方式如此,参见:UnityCsReference/Modules/UIElements/Core/GameObjects/NavigateFocusRing.cs at master · Unity-Technologies/UnityCsReference · GitHub

我知道你也可以通过TAB键在按钮之间切换,但这仅适用于键盘。对于手柄来说仍然不够好。

多年前(当UI Toolkit刚推出时)我就向Unity抱怨过这个问题,然而一直没有改变。因此我不得不实现自己的解决方案(过去我也为uGUI做过同样的事情,因为它的自动导航虽然好一些,但仍然不理想)。

在制作这个系统时,我(又一次)遇到了UI Toolkit的一些API限制。其中一个特别烦人的问题是“overflow:hidden”样式无法在resolvedStyle中公开访问。我向Unity反馈了这个问题,一位Unity员工(感谢mcoted3d)创建了一个Bug,大家可以在这里投票:
https://issuetracker.unity.com/issues/24670/overflow-isnt-exposed-in-resolvedstyles

所以,如果你有能力并且在意这个问题。请投票支持,这样我们就能获得更好的API,未来的开发者也不必像我一样受苦了。

谢谢 :-)