Skip to content

preStartGame:completion:

预启动游戏(通过 Game ID)

该方法通过游戏唯一标识符(Game ID)异步开启游戏的预启动流程。它不仅涵盖了资源检查和运行时环境的加载(preLoad),还会进一步触发游戏逻辑的初始化执行。此接口能够让游戏在后台提前完成首屏渲染准备,从而在用户真正触发“开始”指令时,实现几乎无感的瞬间切换。


方法声明

objectivec
/**
 Pre-start game using game ID. 
 Initializes the environment and executes initial game logic in the background.
 @param gameID The unique identifier of the game.
 @param completion Called when the pre-start operation finishes.
 @return An instance of id<SUDOPGameTask> to track the pre-start task.
 */
+ (id<SUDOPGameTask>)preStartGame:(NSString *)gameID
                       completion:(nullable SUDOPGameOperationCompletion)completion;

参数说明

参数名类型必传描述
gameIDNSString *游戏的唯一标识符。
completionSUDOPGameOperationCompletion异步预启动完成后的回调。成功时 gameHandleProvider 将提供已完成预热的游戏句柄。

返回值

返回一个遵循 id<SUDOPGameTask> 协议的对象,用于管理该预启动任务(如监控状态或执行 cancel 以释放预热资源)。


运行行为

  1. 自动链路转换:SDK 会自动检查本地是否存在该 gameID 的资源。如果不存在,内部会尝试获取签名并触发下载流程。
  2. 后台静默运行:游戏引擎会启动并执行脚本,但此时不创建可见视图(View),且默认不开启音频输出。
  3. 状态就绪:当游戏完成首屏所需的网络请求和资源解码后,触发 completion 回调。

代码示例

objectivec
// 适合在用户点击进入游戏详情页时调用,提前预热
[SUDOP preStartGameWithGameID:@"game_101" completion:nil];

注意事项

  • 资源消耗:相比于 preLoadpreStart 会占用更多的 CPU 和内存,因为它涉及了游戏脚本的实际运行。
  • 取消机制:如果用户退出了相关页面且未启动游戏,建议调用 [preStartTask cancel] 以停止后台运行的游戏逻辑并释放资源。
  • 后续调用:一旦此接口成功,后续调用同一 gameIDstartGame 接口将直接使用此预热好的实例,实现极速响应。