如果单击按钮,Unity 会阻止跳转

Unity Prevent Jump if Button was clicked

我有一个玩家可以跳跃的菜单场景。在真正的游戏开始之前只是为了好玩。游戏从点击 UI-Button 开始。但是,如果我单击按钮,播放器会在加载新场景之前跳转。我想阻止这种情况。所以我必须在跳转之前检查是否没有单击任何按钮。任何想法如何做到这一点?

我用静态变量试过了。但问题是,调用跳转函数的脚本首先运行。在我可以将变量设置为 false 的 Buttonscript 之前。

void Update()
{
    isGrounded = Physics2D.OverlapCircle(GroundCheck1.position, 0.15f, groundLayer);

    // Here I want to check if the click doesnt hit a button
    if (Input.GetMouseButtonDown(0) && isGrounded)
    {
        GetComponent<AudioSource>().Play();

        // Here I set Jump to true, so my FixedUpdate Method can execute the Jump
        jump = true;
    }
}

很简单。

检查鼠标是否在 GUI 元素上:

EventSystem.current.IsPointerOverGameObject()

所以

if (Input.GetMouseButtonDown(0) 
&& isGrounded 
&& !EventSystem.current.IsPointerOverGameObject())

这会检查以确保如果他们单击鼠标并且他们不在 GUI 元素上,那么玩家可以跳跃。

顺便说一句,当你遇到像这样的大条件时,最好将它们分解成辅助方法。