C# 有没有办法“刷新”游戏状态?

C# 有没有办法“刷新”游戏状态?,c#,enums,xna,C#,Enums,Xna,所以我使用enum来表示游戏状态。当我处于游戏状态时,我可以暂停并返回主菜单。但如果我点击Play game并再次转到game playing,一切都和我离开时一样。我正在寻找一种方法来重新启动/刷新/刷新游戏状态。因此,如果我回到它,我将不得不重新开始。您现在有一些代码,可以假定在程序启动时初始化您的游戏状态。如果需要的话,您需要将代码分解出来,以便可以随时调用它来初始化游戏状态。例如,当您开始一个新游戏时,即将您的游戏状态移动到游戏状态 事实上,大多数初始化代码,即除不需要在新游戏上重新初始

所以我使用enum来表示游戏状态。当我处于游戏状态时,我可以暂停并返回主菜单。但如果我点击Play game并再次转到game playing,一切都和我离开时一样。我正在寻找一种方法来重新启动/刷新/刷新游戏状态。因此,如果我回到它,我将不得不重新开始。

您现在有一些代码,可以假定在程序启动时初始化您的游戏状态。如果需要的话,您需要将代码分解出来,以便可以随时调用它来初始化游戏状态。例如,当您开始一个新游戏时,即将您的游戏状态移动到游戏状态


事实上,大多数初始化代码,即除不需要在新游戏上重新初始化的内容外的所有代码,您可能只想在那时运行。启动程序后再运行它是多余的,只会减慢启动时间。

我的游戏类有敌人、爆炸、子弹等列表。。。在Gampleay类中,我有Init sub,当状态更改为gameplay时执行。它将清除所有和负载级别

在伪代码中,如下所示:

Class GamePlay
    Sub Init
       Enemies.Clear()
       Explosions.Clear()
       Bullets.Clear()
       Paralax.Clear()
       Stars.Clear()
       LoadLevel(lvl)
    End Sub

    Sub LoadLevel(lvl)
       Stars.Geneate(200)
       Paralax.Add(new Paralax(type, position, velocity))
    End Sub

    Sub Update
        if (mainship.fire) bullets.fire()
    End Sub

    Sub Draw
    End Sub
End Class

听起来您需要实现so‘Restart/Continue/`等功能,因此,如果您想要或需要添加有关枚举的内容,请添加它。。同时展示一些代码,这样我们就可以看到你的枚举看起来是什么样子了。就在我的脑海里:添加一个新的游戏状态,在初始化/设置完成后切换到游戏状态怎么样?你的意思是我应该把它放在初始化中吗?我不知道。我不做XNA,所以我不知道初始化是什么,也不知道何时调用它。但是,假设这是XNA在您从主菜单状态切换到游戏状态时自动调用的方法,是的……这听起来是一个放置初始化的好地方彼得的回答需要考虑到代码通常是正确的,但不要把它放进去。原因是XNA的Game.Initialize只调用一次,这是在启动期间调用的。有关更多详细信息,请参阅上面的链接。您需要创建一个新方法,并在适当的时候调用它。虽然对于初始游戏启动来说,这是一个很好的答案,但它不能满足OP关于如何通过状态机重新启动/刷新/刷新的需求