首先我要说的是,我正在开发 Unity,我需要管理 Oculus 控制器中的菜单输入,但每次我按下按钮时,它只能在当时起作用,仅此而已。如果我设置断点,它每次都会起作用
public void Update()
{
if (menu.activeSelf == true && smenu.activeSelf == true)
{
menu.SetActive(false);
smenu.SetActive(false);
}
if (menu.activeSelf == true && amenu.activeSelf == true)
{
menu.SetActive(false);
amenu.SetActive(false);
}
if (menu.activeSelf == true && imenu.activeSelf == true)
{
menu.SetActive(false);
imenu.SetActive(false);
}
if (Input.GetKeyDown(KeyCode.Menu) || Input.GetKeyDown(KeyCode.T))
{
ToggleMenu();
Debug.Log("Pause menu ON");
}
if(Input.GetKeyDown(KeyCode.JoystickButton3) || Input.GetKeyDown(KeyCode.JoystickButton1))
{
ToggleMenu();
Debug.Log("Pause menu ON");
}
}
public void ToggleMenu()
{
if (menu != null)
{
// Inverti lo stato attivo/inattivo del menu
menu.SetActive(!menu.activeSelf);
Debug.Log("TOGGLE MENU");
}
}
更新函数将在每一帧被调用,因此当用户按下按钮时,ToggleMenu 函数将被连续调用,直到用户释放按钮。断点将阻止 ToggleMenu 多次调用。您可以检查参考我的代码来修复它:
if ((Input.GetKeyDown(KeyCode.Menu) || Input.GetKeyDown(KeyCode.T)) && !menuTogglePressed)
{
ToggleMenu();
Debug.Log("Pause menu ON");
menuPressed = true; // Mark as pressed
}
else if (menuTogglePressed && (Input.GetKeyUp(KeyCode.Menu) || Input.GetKeyUp(KeyCode.T)))
{
menuPressed = false; // Reset the flag when the key is released
}