我正在尝试处理用户按下开始按钮或搜索按钮并将应用程序设置为休眠状态的情况。我基本上希望它加载暂停屏幕,以便当用户返回应用程序时,会显示暂停屏幕。
当我尝试在停用的方法中创建新屏幕时遇到困难 - 我无法加载任何内容,因为内容管理器已被禁用。
这有什么办法吗?即我可以在停用的方法中加载新内容吗?
到目前为止,这是我的代码:
void GameDeactivated(object sender, DeactivatedEventArgs e)
{
// Mute the game.
//MediaPlayer.IsMuted = true;
//AudioManager.IsMuted = true;
GameScreen[] screens = mScreenManager.GetScreens();
if(screens[screens.Length - 1] is GameplayScreen)
{
Debug.WriteLine("I am here and the last screen is a gameplay one");
GameplayScreen gs = (GameplayScreen) screens[screens.Length - 1];
Debug.WriteLine("here and " + gs.Level.LevelData.Index);
//AudioManager.PauseSong();
// This is the error line as when it tries to load the new screen it gets null reference exceptions.
//mScreenManager.AddScreen(new PauseScreen(gs.Level.LevelData), null);
}
base.OnDeactivated(sender, e);
}
答案 0 :(得分:0)
我鼓励您实施一些预先内容加载,以便解决您的OnDeactivate问题。加载“按需”可能会使你的游戏在某些情况下“滞后” - 即第一次呈现新怪物 - 内容正在加载 - >调用磁盘上的内容文件 - >低fps一秒〜秒。您还可以在wasGameDeactivated
中添加一些类似OnGameActivated
的布尔值和加载暂停状态。