我正在尝试为我的游戏制作一个开始菜单,我的代码使用Enum来监控屏幕状态。
现在我想在我的Background类
中更改在主类中声明的screenstateScreen screen = new Screen();
在Game1类中声明
Background(ref screen);
这是后台类的更新方法
KeyboardState keystate = Keyboard.GetState();
switch (screen)
{
case Screen.Start:
if (isPressed && keystate.IsKeyUp(Keys.Up) && keystate.IsKeyUp(Keys.Down) && keystate.IsKeyUp(Keys.Enter))
{
isPressed = false;
}
if (keystate.IsKeyDown(Keys.Down) && isPressed != true)
{
if (menuState == MenuState.Options)
menuState = MenuState.Credits;
if (menuState == MenuState.Play)
menuState = MenuState.Options;
isPressed = true;
}
if (keystate.IsKeyDown(Keys.Up) && isPressed != true)
{
if (menuState == MenuState.Options)
menuState = MenuState.Play;
if (menuState == MenuState.Credits)
menuState = MenuState.Options;
isPressed = true;
}
switch (menuState)
{
case MenuState.Play:
arrowRect.X = 450;
arrowRect.Y = 220;
if (keystate.IsKeyDown(Keys.Enter) && isPressed != true)
screen = Screen.Play;
break;
case MenuState.Options:
arrowRect.X = 419;
arrowRect.Y = 340;
if (keystate.IsKeyDown(Keys.Enter) && isPressed != true)
screen = Screen.Options;
break;
case MenuState.Credits:
arrowRect.X = 425;
arrowRect.Y = 460;
if (keystate.IsKeyDown(Keys.Enter) && isPressed != true)
screen = Screen.Credits;
break;
}
break;
}
}
出于某种原因,当我播放这个并点击输入按钮时,后台课程的屏幕被更改但是主课程的屏幕不是我怎么能改变这个?
答案 0 :(得分:0)
也许你在其他地方做错了,这段代码似乎是正确的。
您可以绕过此问题,在GetState()
课程中添加Background
方法,并使用Game1
Update
方法调用该方法,而不使用ref screen
。
修改强>
如果screen
是enum
我认为你不能像参考那样传递它,因为
System.Enum是一种引用类型,但任何特定的枚举类型都是一个值 类型。