我正在制作一个具有透明背景的桌面应用程序(想想桌面玩具(,我正在努力找出是否有办法获得Windows任务栏的以下值;位置、方向、隐藏、锁定等
我想调整一些游戏资产,这样任务栏就像";地板;
有人能给我指正确的方向吗?
谨致问候,Ian
无论您找到什么解决方案,它都很可能会破坏与其他操作系统的所有兼容性。
如果这不是问题,那么最简单的解决方案可能是使用System.Windows.Forms.Screen
的WorkingArea
属性。这将返回屏幕的宽度+高度,减去任务栏(以及其他一些东西,如停靠窗口(。
这通常不包括在您的项目中(因为它是特定于操作系统的(,所以我们必须手动安装包含以下代码的DLL:
- 创建一个名为"的新文件夹;插件";在您的资产文件夹中,如果它还不存在
- 将
C:WindowsMicrosoft.NETFrameworkv(highest version number)System.Windows.Forms.dll
复制到新的Plugins文件夹中 - 点击进入Unity以允许其导入新文件
- 重新启动Unity和您的IDE
完成所有这些之后,您应该能够像正常情况一样导入System.Windows.Forms
,并调用Screen.WorkingArea
以在安全区域内移动。请注意,Unity有自己的";屏幕";类,因此您可能需要通过System.Windows.Forms.Screen.WorkingArea
显式调用我们的新Screen。
请注意,这也返回了一个System.Drawing.Rectangle
,而不是Unity的UnityEngine.Rect
,所以只需要获取宽度和高度,而不是存储结果rect。