というわけで、XNAで2Dゲームを作っています。いつもはウィンドウモードで開発していたのですが、フルスクリーンにしてみました。ほとんどの部分で問題なく動作しますが、重要な部分で失敗します。それは、Windows キーまたは ALT-TAB を使用してゲームを終了し (フォーカスを外して)、戻ったときです (ここでクラッシュします)。
SpriteBatches のみを使用します。
Visual Studio でデバッグ情報が返されませんが、これはグラフィック部分で問題が発生したためです。
これはメイン コンストラクターです (元は Game1 と呼ばれていました)。
public Main()
{
status = StatusIgre.GlavniMenu;
Content.RootDirectory = "Content";
gameEndTimer = new Stopwatch();
graphics = new GraphicsDeviceManager(this);
graphics.PreferredBackBufferHeight = GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Height;
graphics.PreferredBackBufferWidth = GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Width;
graphics.IsFullScreen = true;
}
}
私もこれを試しました:
protected override void Initialize()
{
//kamera oziroma viewport
camera = new Camera(new Vector2(400,250), GraphicsDevice);
previousState = Keyboard.GetState();
graphics.GraphicsDevice.DeviceLost += new EventHandler<EventArgs>(GraphicsDevice_DeviceLost);
base.Initialize();
}
void GraphicsDevice_DeviceLost(object sender, EventArgs e)
{
PresentationParameters parameters = new PresentationParameters();
parameters.BackBufferHeight = GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Height;
parameters.BackBufferWidth = GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Width;
GraphicsDevice.Reset(parameters);
}
GraphicsDevice_DeviceLost で 'throw Exception()' も試しましたが、例外は表示されないようです。私の推測では、この関数を呼び出すことすらありません。
すでにこれについてGoogleで検索しましたが、これに関する情報は貧弱で、ほとんどが3D(バッファのリセットなど)に関するものです。
それで、何か提案はありますか?本当にありがとう!