如果单击按钮,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 元素上,那么玩家可以跳跃。
顺便说一句,当你遇到像这样的大条件时,最好将它们分解成辅助方法。
我有一个玩家可以跳跃的菜单场景。在真正的游戏开始之前只是为了好玩。游戏从点击 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 元素上,那么玩家可以跳跃。
顺便说一句,当你遇到像这样的大条件时,最好将它们分解成辅助方法。