C# 如何在点击游戏对象时创建菜单?(团结)
我希望能够将鼠标悬停在游戏对象(代理)上,然后右键或左键单击,创建一个类似于windows右键单击菜单的浮动菜单。我尝试过使用OnGUI()和OnMouseOver()的组合,但是我要么没有得到我需要的行为,要么什么都没有得到。以下是我到目前为止的情况:C# 如何在点击游戏对象时创建菜单?(团结),c#,user-interface,unity3d,menu,mouseover,C#,User Interface,Unity3d,Menu,Mouseover,我希望能够将鼠标悬停在游戏对象(代理)上,然后右键或左键单击,创建一个类似于windows右键单击菜单的浮动菜单。我尝试过使用OnGUI()和OnMouseOver()的组合,但是我要么没有得到我需要的行为,要么什么都没有得到。以下是我到目前为止的情况: private void OnMouseOver() { mouseOver = true; mousePos = Input.mousePosition; } private void OnMouseExit() {
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 我要做的是在画布中创建所需的菜单,添加动画控制器和动画并将其置于摄影机视图之外(动画将菜单移动到摄影机视图内),最后添加布尔条件触发器以隐藏或显示菜单 然后,我只需在按钮中附加一个单击功能,当有人单击它时触发动画
public class ShowMenu : MonoBehaviour
{
public Animator ObjectBtnAnimations;
public void HideObjControls()
{
if (ObjectBtnAnimations.GetBool("hide"))
{
ObjectBtnAnimations.SetBool("hide", false);
}
else
{
ObjectBtnAnimations.SetBool("hide", true);
}
}
}
Input.GetMouseButtonDown()仅对单个帧执行,因此正在绘制GUI.Box,但仅对单个帧执行
若要修复此输入,可以使用GetMouseButton(),因为只要按下按钮,它就会执行。是否为要悬停的对象添加了碰撞器?我不知道该输入。GetMouseButtonDown()仅对单个帧执行,因此菜单会出现,但仅对该帧执行。我用Input.GetMouseButton()替换了这个问题,只要按下按钮,它就会执行