c# - 如何在单击游戏对象时创建菜单? (统一)

标签 c# user-interface unity3d menu mouseover

我希望能够将鼠标悬停在游戏对象(代理)上并在右键或左键单击时创建一个类似于 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# - 如何在单击游戏对象时创建菜单? (统一),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49614537/

相关文章:

c# - 垃圾收集器和事件处理程序

c# - 扩展方法不适用于 int?

c# - 来自 url 的音频未完全播放

c# - 我应该在销毁游戏对象时取消字段吗?

c# - 不是外键列,不能在这里使用

C# WinForms。在组件中实现属性 "Name"

ios - 如何将自定义字体应用于整个框架中的所有 Labels、UITextFields 和 UIButtons?

java - Gui 中可调整大小的框架

ios - iOS 应用程序从后台返回后卡住的原因是什么?

c# - unity GetComponent<Type> 返回值