【问题标题】:Restart game XNA重启游戏 XNA
【发布时间】:2014-06-04 05:50:20
【问题描述】:

我怎样才能让游戏在我输球时重新开始?我的游戏分为三个部分:主菜单、游戏和结束(当你输了)。所以我把Update和draw方法分成了3个部分。现在,如果我输了,我需要重新开始游戏的选项。

bool lost=false; //when it is "true" I lost
if(lost==true)
{
    if(Keyboard.GetState().IsKeyDown(Keys.Enter))
    {
    // Restart game
    }
}

【问题讨论】:

  • the end 处于显示状态并且用户按下回车键时显示主菜单屏幕。
  • 是的,但它无论如何都不起作用,因为如果我在主菜单中制作“新游戏”,它会直接将我发送到“结束”屏幕
  • 你还必须在显示主菜单屏幕之前设置 lost = false
  • ...所以你必须在那个事件中重置你的游戏状态。
  • XNA 不是游戏制造商,您必须全部编写代码。如果您正在使用游戏状态,则将状态更改为主屏幕(仅更新和绘制主屏幕),然后在此之前处理所有元素。

标签: c# xna 2d-games


【解决方案1】:

你需要确保你在重启时设置了lost = false

【讨论】:

  • 它是.. 现在我可以再次“重新启动”,但敌人和其他物体不在初始位置,因为我之前杀死/摧毁了它们。现在我只需要知道如何重新初始化对象/敌人的列表。
  • 你可以创建一个初始化你的游戏世界的方法。在 load_content() 或 initialize() 中调用它,并在你设置 lost = false 的地方调用它
【解决方案2】:

您必须展示更多内容,以便任何人能够提供更具体的帮助,所以我只能说,您需要在该事件中以某种方式重置您的游戏状态 - 这在很大程度上取决于您如何自己建造的。例如,一个常见的方案是拥有一个所有屏幕都实现的 IScreen 接口,而 Game 类只包含其中一个。要从一个切换到另一个(例如,从“WorldScreen”切换到“MainScreen”),您只需初始化 MainScreen 并丢弃 WorldScreen 对象。

【讨论】:

  • 例如我做了一个“暂停”系统。如果我按“P”键,会出现三件事:恢复,主菜单,退出。如果我回到主菜单,然后我再次尝试选择“播放”,这不是一个新游戏,它只是一个“简历”
  • 看看我的另一个问题:如何重置列表 XNA 和 C#。我把更多细节放在那里。
  • @FkinP3rfect 如果您切换到主菜单对象,请不要保留世界屏幕对象。扔掉它,然后像第一次一样重新初始化它。
  • 完成!!它可以运行,但它滞后 5 秒(或多或少),因为它必须更新和初始化所有内容。我想我必须在加载所有内容时绘制一个“加载”图像,只是为了不显示滞后的屏幕
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-20
  • 2011-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-18
  • 2023-04-07
相关资源
最近更新 更多