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;参数说明
| 参数名 | 类型 | 必传 | 描述 |
|---|---|---|---|
| gameID | NSString * | 是 | 游戏的唯一标识符。 |
| completion | SUDOPGameOperationCompletion | 否 | 异步预启动完成后的回调。成功时 gameHandleProvider 将提供已完成预热的游戏句柄。 |
返回值
返回一个遵循 id<SUDOPGameTask> 协议的对象,用于管理该预启动任务(如监控状态或执行 cancel 以释放预热资源)。
运行行为
- 自动链路转换:SDK 会自动检查本地是否存在该
gameID的资源。如果不存在,内部会尝试获取签名并触发下载流程。 - 后台静默运行:游戏引擎会启动并执行脚本,但此时不创建可见视图(View),且默认不开启音频输出。
- 状态就绪:当游戏完成首屏所需的网络请求和资源解码后,触发
completion回调。
代码示例
objectivec
// 适合在用户点击进入游戏详情页时调用,提前预热
[SUDOP preStartGameWithGameID:@"game_101" completion:nil];注意事项
- 资源消耗:相比于
preLoad,preStart会占用更多的 CPU 和内存,因为它涉及了游戏脚本的实际运行。 - 取消机制:如果用户退出了相关页面且未启动游戏,建议调用
[preStartTask cancel]以停止后台运行的游戏逻辑并释放资源。 - 后续调用:一旦此接口成功,后续调用同一
gameID的startGame接口将直接使用此预热好的实例,实现极速响应。