0

我正在尝试为我的游戏制作一个开始菜单,我的代码使用 Enum 来监控屏幕状态。

现在我想在我的背景类中更改主类中声明的屏幕状态

Screen 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;
       }
 }

出于某种原因,当我玩这个并按下回车按钮时,背景类的屏幕已更改,但主类的屏幕不是我该如何更改?

4

1 回答 1

0

也许你在其他地方做错了什么,这段代码似乎是正确的。

您可以绕过此问题GetState(),在您的类中添加一个方法Background,并在您的方法中调用它Game1 Update,而无需使用ref screen.

编辑

如果screenenum我认为你不能像参考一样传递它,因为

System.Enum 是引用类型,但任何特定的枚举类型都是值类型。

于 2013-10-11T10:14:50.693 回答