Q
冻结游戏
1
A
回答
2
单行破解会在主Update()中调用Thread.Sleep(x),但是会在指定的时间内将挂起游戏。用户会认为你的应用程序无响应,他可能会杀死它并重新启动它!这可能不是你想要的。
我构建游戏的方式是,每个主要组件都有自己的Update()(或Tick()()方法,该方法在每个逻辑更新上调用。您可以选择性地冻结组件,只需在一段时间内不调用它们的Update()即可。有些东西你一定不想冻结,比如刷新屏幕,回应用户输入或声音处理。
一些示例代码:
// To pause the game for x number of frames, set pauseDelay = to x
int pauseDelay;
public void Update() {
if (pauseDelay > 0) {
--pauseDelay;
}
else {
physics.Update();
ai.Update();
}
input.Update();
sound.Update();
}
2
如果您基于GameComponents开发游戏,通常可以将Enabled标志设置为false,以防止执行更新逻辑,这显然取决于其他因素(类更新逻辑之外的对象操作,更新逻辑在抽签或其他方法进行ECT ..)
public class Car : GameComponent
{
// This logic is only called if the Enabled property is set to true.
public override void Update(GameTime gameTime)
{
base.Update(gameTime);
}
}
如果你不使用游戏组件那么这将是很简单的引入有效标记设为您的clases和执行更新逻辑之前检查这一点。
+0
我会试试.. – Pilispring
1
如果您寻找一个非常简单的方法(安迪似乎好一些,但这是快速的方法)
在您的更新方法的类,添加在顶部:
if (isPaused)
break;
您可以使用isActive检查窗口是否处于活动状态。
相关问题
- 1. removeAll()冻结游戏
- 2. Unity游戏冻结
- 3. XNA游戏冻结
- 4. Gamemaker游戏冻结电脑
- 5. Java游戏在战斗中冻结
- 6. 线程循环冻结游戏窗口
- 7. OPENGLES游戏每3秒钟冻结
- 8. Pygame游戏中的字符被冻结
- 9. 井字游戏Java游戏不结束
- 10. Java - 在CardLayout中切换面板时游戏线程会冻结
- 11. JavaScript游戏不工作,初始化后冻结
- 12. 当屏幕被锁定并解锁时,游戏会冻结
- 13. 我们游戏中的时间错误,currentTimeMillis冻结?
- 14. 安卓游戏始终只在三星银河s2上冻结
- 15. 低图形HTML5游戏,使浏览器冻结
- 16. java中的声音 - 播放声音时游戏会冻结
- 17. 多次切换场景后SpriteKit游戏被冻结
- 18. 当我尝试运行游戏时,Pygame窗口会冻结
- 19. Android 2D游戏应用程序冻结1秒一致
- 20. 游戏:一般结构和游戏项目结构
- 21. 结束我的RPS游戏?
- 22. CCActionDelay结束游戏序列
- 23. AS3 hitTestObject结束游戏
- 24. AS3游戏元素结构
- 25. 团结5 - 2D游戏 -
- 26. Java游戏数据结构
- 27. Android游戏开发结构
- 28. 游戏结构设计
- 29. cocos2d iphone游戏结构
- 30. 游戏编程结构
我不认为有一个内置的方式做到这一点,是因为它能够依赖于子系统。也许你想让逻辑和物理学冻结,但音乐应该继续播放。你将不得不在你自己的特定组件的更新逻辑中实现它。 – dowhilefor
简单的Google不会在Matlab中显示“等待”功能的文档。你能否提供一个链接,以便我们确切地知道你在做什么?或者,更好的是,自己来形容它?你的问题有点含糊不清(有很多不同的方法可以“冻结”游戏)。 –
作为dowhilefor说,我会在更新中实施阻止一些动画或输入(例如命中后)。 – Pilispring