C# 代码在 Unity 上没有断点时无法运行

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

首先我要说的是,我正在开发 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");
    }
}
c# breakpoints
1个回答
0
投票

更新函数将在每一帧被调用,因此当用户按下按钮时,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
}
© www.soinside.com 2019 - 2024. All rights reserved.