你是怎么做到的,所以游戏可以退出但在主类中没有代码,在不同的类中?
问问题
9340 次
4 回答
6
您还可以使用一种单例模式,即在您的主游戏类中定义该类类型的静态变量。当您构造或初始化该类时,然后将该变量设置为this
,允许您在任何地方都可以轻松访问该类的实例。
public class Game1 : Microsoft.Xna.Framework.Game
{
public static Game1 self;
public Game1()
{
self = this;
//... other setup stuff ...
}
//... other code ...
}
然后,当您想从代码中的几乎任何位置调用此类中的方法时,您只需执行以下操作:
Game1.self.Exit(); //Replace Exit with any method
这是可行的,因为通常应该只Game
存在一个类。自然,如果您要以某种方式拥有多个Game
类,则此方法将无法正常工作。
于 2015-03-17T00:43:41.500 回答
5
您可以创建一个方法:
//Inside of game1.cs
public void Quit()
{
this.Exit()
}
我假设您想在菜单组件上退出游戏,在这种情况下,您需要将 game1 的实例传递给组件,也许将其作为参数添加到菜单组件更新方法中。
public void Update(GameTime gameTime, Game1 game)
{
if(key is pressed)
{
game.Quit();
}
}
我不确定是否还有其他方法......也许找到一种方法来“强制”按下关闭按钮。
为了发送 game1.cs 的实例:
//in game1.cs
//in your update method
public void Update(GameTime gameTime)
{
//sends the current game instance to the other classes update method, where
// quit might be called.
otherClass.Update(gameTime, this);
//where 'this' is the actual keyword 'this'. It should be left as 'this'
}
于 2013-05-15T03:41:02.770 回答
3
在您的主游戏类中(Game1
默认情况下)使用全局变量:
public static Boolean exitgame = false;
在 Game1 更新例程中:
protected override void Update(GameTime gameTime)
{
SomeOtherClass.Update(gameTime);
if (exitgame) this.Exit();
base.Update(gameTime);
}
于 2013-10-19T18:39:28.927 回答
0
您可以像这样告诉 XNA 引擎立即关闭:
Game.Exit();
这将立即退出游戏。请注意,我说Game.Exit()
- Game 应该是您的游戏实例。如果您在实现 的类中进行编码Game
,则可以简单地执行以下操作:
Exit()
于 2013-05-15T03:04:57.647 回答