pause
暂停游戏逻辑与渲染
pause 用于将小游戏从运行状态切换到暂停状态。调用此方法后,小游戏内部的帧回调(requestAnimationFrame)、定时器(Timer)以及物理引擎逻辑都会停止执行,同时渲染循环也会挂起以节省系统资源。
方法声明
objectivec
/**
* 暂停小游戏运行。
* 操作成功后,小游戏实例将进入 `WAITING` 状态。
* 此时游戏画面将停留在最后一帧。
*/
- (void)pause;参数说明
| 参数名 | 类型 | 必传 | 描述 |
|---|---|---|---|
| 无 | - | - | 该方法不接受参数。 |
运行行为
- 逻辑挂起:立即停止所有 JavaScript 层的业务逻辑执行,包括动画帧更新和异步任务。
- 渲染冻结:GPU 停止输出新的画面帧,屏幕保留调用
pause瞬间的画面。 - 状态迁移:执行成功后,状态由
SUD_RT_GAME_STATE_PLAYING (3)迁移回SUD_RT_GAME_STATE_WAITING (1)。 - 低功耗模式:引擎进入低功耗占用状态,减少对 CPU 和电池的消耗。
代码示例
通常用于 App 弹出原生弹窗、切换到后台或用户主动点击暂停按钮的场景:
objectivec
- (void)handleAppWillResignActive {
// 1. 检查当前是否在游戏中
if ([self.gameHandle getGameState] == SUD_RT_GAME_STATE_PLAYING) {
// 2. 执行暂停
[self.gameHandle pause];
NSLog(@"App 进入后台,游戏已暂停");
}
}
// 或者在点击原生设置按钮时
- (void)onSettingsButtonClicked {
[self.gameHandle pause];
[self showNativeSettingsView];
}注意事项
- 音频处理:
pause通常只停止逻辑和渲染,建议配合getGameAudioSession或getMediaPlayerHandle同步处理音频的暂停,防止画面静止但音乐继续播放。 - 网络连接:暂停期间,小游戏的网络长连接(如 WebSocket)通常保持心跳,不会自动断开。
- 恢复指令:处于暂停状态(WAITING)的游戏,必须通过调用
play方法才能恢复运行。 - 自动暂停:在某些 SDK 版本中,当
gameView从窗口移除时可能会触发自动暂停,但显式调用pause是最稳妥的管控方式。