preStartGameWithSignature:completion:
预启动游戏(通过游戏签名)
该方法处于“预加载(preLoad)”与“正式启动(startGame)”之间。它不仅完成了运行环境的准备,还会触发游戏脚本的初次执行(如加载首屏资源、建立服务器连接等),但此时游戏视图(View)仍处于隐藏或静止状态。通过此接口,可以实现游戏画面的“瞬间弹出”体验。
方法声明
objectivec
/**
Pre-start game with a game signature.
This moves the game state closer to active running without displaying the UI.
@param gameSignature The signature used to authorize the game operation.
@param completion Called when the pre-start operation finishes.
@return An instance of id<SUDOPGameTask> to track the pre-start task.
*/
+ (id<SUDOPGameTask>)preStartGameWithSignature:(NSString *)gameSignature
completion:(nullable SUDOPGameOperationCompletion)completion;参数说明
| 参数名 | 类型 | 必传 | 描述 |
|---|---|---|---|
| gameSignature | NSString * | 是 | 游戏的授权签名字符串。 |
| completion | SUDOPGameOperationCompletion | 否 | 异步预启动完成后的回调。成功时表示游戏已在后台运行至就绪状态。 |
返回值
返回一个遵循 id<SUDOPGameTask> 协议的对象。开发者可以通过该对象获取任务信息或在用户退出页面时调用 cancel。
运行行为
- 流水线执行:如果之前未调用过
preLoad,该方法会自动包含preDownload和preLoad的所有逻辑。 - 脚本执行:与
preLoad仅加载环境不同,preStart会启动游戏逻辑,触发游戏框架的onLoad或类似的生命周期钩子。 - 静默运行:游戏会在内存中完成首屏渲染准备,但不会将渲染内容提交到屏幕,也不会占用音频输出(取决于内部配置),直到调用正式的
startGame。
代码示例
objc
// 适合在用户进入游戏大厅,且极大概率会点击“开始”时调用
[SUDOP preStartGameWithSignature:signature completion:nil];注意事项
- 性能损耗:
preStart会产生 CPU 消耗(因为脚本已经在运行)。如果用户最终没有启动游戏,请务必及时清理,避免不必要的能耗。 - 时机建议:通常在用户点击“进入房间”或“准备游戏”时调用。
- 状态衔接:调用此接口后,再调用
startGame系列接口,SDK 将直接复用此预启动的状态,实现“秒开”。