hud 元素和鼠标的像素位置统一

问题描述 投票:0回答:1

我正在尝试使用 C# 统一检测鼠标是否位于 hud 元素上。

我的 HUD 元素占据了屏幕右侧约 1/5。

我基本上想做

if mouse.x < hud_element.x

如果我单击此处(红色 x 位于 HUD 面板左侧几个像素处)

example of click

我有这个功能(我放了一些 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 元素。

element from editor ui

ps) 我这样做的原因是:我使用内置的 OnMouseDown 函数来检查游戏对象中的点击检测。但令人烦恼的是,这通过我的平视显示器起作用。所以我需要一个函数来检查鼠标是否位于平视显示器上。这样我就可以避免点击HUD

这里还有通往“信息面板”的对象树及其在检查器中的值

enter image description here

c# unity-game-engine coordinates
1个回答
0
投票

我需要一个函数来检查鼠标是否位于HUD上方。

如果您需要知道是否单击了 ui 对象,我认为 IsPointerOverGameObject 会帮助您。

如果您想知道与屏幕相关的点击位置,您可以使用以下功能:

  • Camera.WorldToViewportPoint

    将位置从世界空间转换为视口空间。
    视口空间已标准化并且相对于相机。相机左下角为(0,0);右上角是 (1,1)。

  • 相机.世界到屏幕点

    将位置从世界空间转换到屏幕空间。
    屏幕空间以像素为单位定义。屏幕左下角为(0,0);右上角是(像素宽度,像素高度)。

  • 相机.ViewportToScreenPoint

    将位置从视口空间转换到屏幕空间。
    视口空间已标准化并且相对于相机。相机左下角为(0,0);右上角是 (1,1)。
    屏幕空间以像素为单位定义。屏幕左下角为(0,0);右上角是(像素宽度,像素高度)

© www.soinside.com 2019 - 2024. All rights reserved.