所以我有一个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语句?
答案 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;
}
}