首页 > 解决方案 > Unity C# Checking bool 采用最后一个选项

问题描述

如果游戏对象处于活动状态(尝试执行暂停选项),我正在尝试做某事,所以如果菜单 1,它是暂停菜单,它是活动的,它需要一个名为 pause 的静态布尔并将其设置为 true ,如果菜单 1 被隐藏,则为假。

我也有菜单选项,如果你点击它,它就在这个初始菜单的上方。

我从隐藏菜单开始,然后按 scape。它有效,但是当我再次尝试隐藏它时,它不起作用。有什么帮助吗?

void Update () {
        if(Input.GetKeyDown(KeyCode.Escape) && !menuoptions.activeSelf){
            OpenMenu();
        }
    }
void OpenMenu(){
        if (menu1.activeSelf){
            menu1.SetActive(false);
            PJController.pause = true;
            Cursor.visible = true;
        }

        if (!menu1.activeSelf){
            menu1.SetActive(true);
            PJController.pause = false;
            ScrollTransformMenu1.sizeDelta = new Vector2 ( -1f , ScrollTransformMenu1.sizeDelta.y );
            Cursor.visible = false;
            StartCoroutine ( ExpandRoutine ( ) );
        }


}

    //Just an animation for opening the menu.
public IEnumerator ExpandRoutine ( ) {
    while ( ScrollTransformMenu1.sizeDelta.x < 544f ) {
        ScrollTransformMenu1.sizeDelta = new Vector2 (  ScrollTransformMenu1.sizeDelta.x + speed * Time.deltaTime ,  ScrollTransformMenu1.sizeDelta.y);
        yield return null;
    }
    ScrollTransformMenu1.sizeDelta = new Vector2 ( 544f , ScrollTransformMenu1.sizeDelta.y );
}

标签: c#

解决方案


想想你在这里做什么:

   if (menu1.activeSelf){
        menu1.SetActive(false);
       // snip...
    }

    if (!menu1.activeSelf){
        menu1.SetActive(true);
        // snip
    }

这两个都将始终执行。在第一个if中,您将菜单设置为非活动状态。在第二个if中,您正在检查菜单是否处于非活动状态,然后将其设置为活动状态。您打算使用 aelse而不是 second的任何机会if

在调试器中设置一些断点并单步执行。


推荐阅读