节目跳过阶段

时间:2014-07-16 12:54:15

标签: c# unity3d

所以我有一个Unity程序,如果用户按下ENTER键,它会切换屏幕。

然而,每当用户按下回车键时,它不会只向前移动一个屏幕,而是一直跳到最后一个屏幕。

这是我的OnGUI():

if (showScreen == true)
        {
        //this allows the screens to toggle
            switch (pageNum)
            {
            case 1:
                rectangle = GUI.Window(1,rectangle, Page1, "Computer");
                break;
            case 2:
                rectangle = GUI.Window(1,rectangle, Page2, "Computer");
                break;
            case 3:
                rectangle = GUI.Window(1,rectangle, Page3, "Computer");
                break;
            case 4:
                rectangle = GUI.Window(1,rectangle, Page4, "Computer");
                break;
            case 5:
                rectangle = GUI.Window(1,rectangle, Page5, "Computer");
                GUILayout.Window (2,rect2, popUp, "Warning!");
                break;
            case 6:
                rectangle = GUI.Window(1,rectangle, Page6, "Computer");
                break;
            case 7:
                rectangle = GUILayout.Window(1,rectangle, Page7, "Computer");
                break;
            default:
                break;
            }
        }

这里是实际设置GUI并进行更改的地方:

void Page1(int windowID)
    {       if (Input.GetKeyDown(KeyCode.Return))
        {
            GUI.FocusControl(null);
            pageNum = 2;
        }
    }

void Page2(int windowID)
    {
if (Input.GetKeyDown(KeyCode.Return))
        {
            pageNum = 3;
            GUI.FocusControl(null);
        }
    }

//continue like this for 5 more Page#(int windowID)

那么我可以在这些类中插入什么来使我的程序停止跳过?我是否应该暂停这些if语句?

1 个答案:

答案 0 :(得分:0)

所以看起来解决这个问题的最简单方法是改变程序改变阶段的方式。您需要做的就是一个布尔值,一旦按下返回键,它就会变为true。

所以只需声明布尔值:

public class ClassName : MonoBehaviour
{
    bool wasClicked = false;

然后改变状态就这样做:

        if (Input.GetKey(KeyCode.Return))
        {
            wasClicked = true;
        }

        if (wasClicked)
        {
            if (!Input.GetKey(KeyCode.Return))
            {
                GUI.FocusControl(null);
                pageNum = next page number;
                wasClicked = false;
            }
        }