gpt4 book ai didi

C# Monogame - 如何在游戏窗口最小化时停止游戏循环

转载 作者:太空狗 更新时间:2023-10-30 01:02:00 26 4
gpt4 key购买 nike

我正在开发一款全屏 Windows 游戏。今天我看到一个独立游戏(用 XNA 制作)有以下行为:当它是焦点窗口时,它会 Update()Draw() 但是当它得到最小化它停止这两个并等待用户再次使其成为顶部窗口。本质上,我正在寻找一种方法来在游戏窗口最小化时“暂停”整个游戏循环,并在游戏再次聚焦时从停止的地方“恢复”它。这意味着如果我最小化我的游戏并打开我的浏览器,例如,当我左键单击时,游戏 GUI 逻辑不会注册它并打开一个窗口或其他任何东西。提前致谢!

最佳答案

两种方法。

方法一:使用Game.IsActive

如果游戏没有焦点...或最小化,

IsActive 将为 false。所以你可以在你的 Game1.cs 的更新循环中做一些事情,比如

if (this.IsActive) 
{
// update your game components
}

方法二:订阅Game.ActivatedGame.Deactivated事件

每当游戏失去焦点时,将引发 Deactivated 事件。在那里你可以写一些代码来暂停一切。如果您有暂停菜单,这是启动暂停菜单的好地方。每当游戏获得焦点时,都会引发 Activated 事件。您编写一些代码来取消暂停游戏。

无论哪种方式,您只需要暂停更新,而不是绘制。如果查看 Draw(),它会清除后备缓冲区并每帧重新绘制所有内容。如果 Draw() 被暂停,您的游戏将出现卡住状态。 Draw() 不应改变游戏的状态。

关于C# Monogame - 如何在游戏窗口最小化时停止游戏循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36071628/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com