我希望能够将鼠标悬停在游戏对象(代理)上,并在右键或左键单击时创建一个类似于 Windows 右键单击​​菜单的 float 菜单。我尝试使用 OnGUI() 和 OnMouseOver() 的组合,但我要么没有得到我需要的行为,要么什么也得不到。这是我到目前为止所拥有的:

private void OnMouseOver()
{
    mouseOver = true;
    mousePos = Input.mousePosition;
}

private void OnMouseExit()
{
    mouseOver = false;
}

private void OnGUI()
{

    if (mouseOver && Input.GetMouseButtonDown(0))
    {
        GUI.Box(new Rect(mousePos.x, mousePos.y, 200f, 100f), "this is a test");
    }
}

mouseOver 和 mousePos 初始设置为 false。

最佳答案

Input.GetMouseButtonDown() 仅针对单个帧执行,因此正在绘制 GUI.Box 但仅针对单个帧执行。

要修复此问题,可以改用 Input.GetMouseButton(),因为只要按下按钮,它就会执行。

关于c# - 如何在单击 GameObject 时创建菜单? (统一),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49614537/

10-12 00:17