Skip to content

pause

暂停游戏逻辑与渲染

pause 用于将小游戏从运行状态切换到暂停状态。调用此方法后,小游戏内部的帧回调(requestAnimationFrame)、定时器(Timer)以及物理引擎逻辑都会停止执行,同时渲染循环也会挂起以节省系统资源。


方法声明

objectivec
/**
 * 暂停小游戏运行。
 * 操作成功后,小游戏实例将进入 `WAITING` 状态。
 * 此时游戏画面将停留在最后一帧。
 */
- (void)pause;

参数说明

参数名类型必传描述
--该方法不接受参数。

运行行为

  1. 逻辑挂起:立即停止所有 JavaScript 层的业务逻辑执行,包括动画帧更新和异步任务。
  2. 渲染冻结:GPU 停止输出新的画面帧,屏幕保留调用 pause 瞬间的画面。
  3. 状态迁移:执行成功后,状态由 SUD_RT_GAME_STATE_PLAYING (3) 迁移回 SUD_RT_GAME_STATE_WAITING (1)
  4. 低功耗模式:引擎进入低功耗占用状态,减少对 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 通常只停止逻辑和渲染,建议配合 getGameAudioSessiongetMediaPlayerHandle 同步处理音频的暂停,防止画面静止但音乐继续播放。
  • 网络连接:暂停期间,小游戏的网络长连接(如 WebSocket)通常保持心跳,不会自动断开。
  • 恢复指令:处于暂停状态(WAITING)的游戏,必须通过调用 play 方法才能恢复运行。
  • 自动暂停:在某些 SDK 版本中,当 gameView 从窗口移除时可能会触发自动暂停,但显式调用 pause 是最稳妥的管控方式。