我正在尝试使用 Unity 中的 C# 检测鼠标是否位于 hud 元素上。我的 hud 元素占据了屏幕右侧约 1/5 的区域。我基本上想要执行 if mouse.x < hud_element....
我正在尝试使用 C# 在 Unity 中检测鼠标是否位于 hud 元素上。
我的 hud 元素占据了屏幕右侧约 1/5 的区域。
我基本上想做
if mouse.x < hud_element.x
如果我单击此处(HUD 面板左侧仅几个像素处的红色 x)
我有这个功能(我放了几个 Debug.Log 来解决一些问题)
public bool is_mouse_left_of_hud()
{
Vector3 mousePos = Input.mousePosition;
float canvas_left = GameObject.Find("Canvas").GetComponent<RectTransform>().offsetMin.x;
float main_hud_panel_left = GameObject.Find("main_hud_panel").GetComponent<RectTransform>().anchoredPosition.x;
float info_panel = GameObject.Find("info panel").GetComponent<RectTransform>().offsetMin.x;
Debug.Log("££££££££");
Debug.Log("mouse x pos = " + mousePos.x);
Debug.Log("main_hud_panel_left = " + main_hud_panel_left);
Debug.Log("canvas offsetmin x = "+canvas_left);
Debug.Log("info_panel offset = " + info_panel);
Debug.Log("main hud offsetmin x + canvas offsetmin x + + info_panel offset = " + ( canvas_left +main_hud_panel_left + info_panel));
if (mousePos.x < (canvas_left + main_hud_panel_left + info_panel))
{
return true;
}
return false;
}
然后单击图像上的红色 x 位置,我得到此输出
££££££££
mouse x pos = 1299.395
main_hud_panel_left = 331
canvas offsetmin x = 560
info_panel offset = 0
main hud offsetmin x + canvas offsetmin x + + info_panel offset = 891
下图显示了编辑器 UI 中的 hud 元素。
ps)我这样做的原因是:我使用内置的 OnMouseDown 函数来检查 GameObjects 中的点击检测。但令人讨厌的是,这通过我的 hud 起作用。所以我需要一个函数来检查鼠标是否在 hud 上。这样我就可以避免通过 hud 点击
这里还有通向“信息面板”的对象树以及检查器中的值
我尝试了上述所有技巧,但都无法隐藏窗口标题栏。
不过,我确实找到了一个解决方案,这里: https://github.com/microsoft/vscode/issues/174903#issuecomment-1762118744
(以及该主题中上述 ryanberckmans 的回复)
它涉及使用 apc customize++ 插件到 vs code 并添加设置来控制它,到您的用户 settings.json。
该线程至少有两个不同的设置建议,对我来说,我链接到的那个有效(他在回复末尾链接到他的设置文件)。
所以:
// ================================================================================
// APC - UI Customizer
// ================================================================================
"window.titleBarStyle": "native",
"apc.menubar.compact": true,
"apc.electron": {
"frame": false,
"titleBarStyle": "hidden"
},
"apc.header": {
"height": 37
},
"apc.sidebar.titlebar": {
"height": 37
},
"apc.activityBar": {
"size": 40,
"itemSize": 40,
"itemMargin": 0
},
"apc.stylesheet": {
".title-label": "display: none !important",
".composite.title": "display: block !important",
".monaco-workbench .part.sidebar .title-actions .actions-container": "justify-content: space-evenly !important"
}
我还隐藏了标签和菜单栏。这带来了一个问题,因为我根本无法调用菜单栏(即 alt-f 不起作用)。因此,这是一个考虑因素,您只能使用 ctrl-shift-p。
希望这能帮助到别人!BR!/mawi