关闭C#中的函数

时间:2014-06-04 17:02:35

标签: c# xna xna-4.0

我正在使用C#在XNA中进行游戏。我做了一个主菜单,有选项“新游戏”。如果我开始游戏并且我输了我重新初始化所有列表/功能并且我可以重新启动游戏。如果我按“P”键(暂停)我第二次玩,我选择“去主菜单“选项出现了一个大错误(NotSupportedException)。看看这里:

int count=0;
bool paus=false;
public void mainMenu()
{
   //...
}

public void updateGame(GameTime gameTime)
{
   //...
}

public void pause()
{
   //...
}
public void ending()
{
   //...
}

//in the Update method:
protected override Update(GameTime gameTime)
}
    if(count==0)
    {
        mainMenu();//if I press "New Game" I put count=1
    }

    if(count==1)
    {    
        if(pause==false)
            updateGame(gameTime);//if I die count=2, if I press P pause=true
    }
    if(pause==true && count==1)
    {
        pause();
    }

    if(count==2)
    {
        ending();//If I press "retry" I reinitialize all and put count=1;
                 //If I press "main menu" I go to main menu and this functions
                 //If I retry to play(retry button) , I press "P" key and then I choose to go to "main menu" there comes out an error (NotSupportedException) If I do it the first time it functions.
    }
{

要解决这个问题我虽然如果Count == 0只执行MainMenu并且在选择播放后我想关闭它。与其他功能相同,我想在使用后关闭它们。我该怎么做?有可能吗?还有另一种方法吗? (如果你不明白的话告诉我,对不起我的英语。)

1 个答案:

答案 0 :(得分:2)

我相信你要问的是,#34;一旦选择了计数选项"我怎么能不继续执行更新功能?通过使用else if块,您可以确保在每次更新调用期间只执行一个选项。试试这个:

protected override Update(GameTime gameTime)
{
    if(count==0)
    {
        mainMenu();//if I press "New Game" I put count=1
    }
    else if(count==1)
    {    
        if(pause==false)
            updateGame(gameTime);//if I die count=2, if I press P pause=true
    }
    else if(pause==true && count==1)
    {
        pause();
    }
    else if(count==2)
    {
        ending();//If I press "retry" I reinitialize all and put count=1;
                 //If I press "main menu" I go to main menu and this functions
                 //If I retry to play(retry button) , I press "P" key and then I choose to     go to "main menu" there comes out an error (NotSupportedException) If I do it the first     time it functions.
    }
}

或者,您也可以通过在您不想继续的函数中的任何位置调用return;来解决此问题。像这样:

protected override Update(GameTime gameTime)
{
    if(count==0)
    {
        mainMenu();//if I press "New Game" I put count=1
        return;
    }

    if(count==1)
    {    
        if(pause==false)
        {
            updateGame(gameTime);//if I die count=2, if I press P pause=true
            return;
        }
    }
    if(pause==true && count==1)
    {
        pause();
        return;
    }

    if(count==2)
    {
        ending();//If I press "retry" I reinitialize all and put count=1;
                 //If I press "main menu" I go to main menu and this functions
                 //If I retry to play(retry button) , I press "P" key and then I choose to      go to "main menu" there comes out an error (NotSupportedException) If I do it the first     time it functions.
        return;
    }
}