Skip to content

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;

参数说明

参数名类型必传描述
gameSignatureNSString *游戏的授权签名字符串。
completionSUDOPGameOperationCompletion异步预启动完成后的回调。成功时表示游戏已在后台运行至就绪状态。

返回值

返回一个遵循 id<SUDOPGameTask> 协议的对象。开发者可以通过该对象获取任务信息或在用户退出页面时调用 cancel


运行行为

  1. 流水线执行:如果之前未调用过 preLoad,该方法会自动包含 preDownloadpreLoad 的所有逻辑。
  2. 脚本执行:与 preLoad 仅加载环境不同,preStart 会启动游戏逻辑,触发游戏框架的 onLoad 或类似的生命周期钩子。
  3. 静默运行:游戏会在内存中完成首屏渲染准备,但不会将渲染内容提交到屏幕,也不会占用音频输出(取决于内部配置),直到调用正式的 startGame

代码示例

objc
// 适合在用户进入游戏大厅,且极大概率会点击“开始”时调用
[SUDOP preStartGameWithSignature:signature completion:nil];

注意事项

  • 性能损耗preStart 会产生 CPU 消耗(因为脚本已经在运行)。如果用户最终没有启动游戏,请务必及时清理,避免不必要的能耗。
  • 时机建议:通常在用户点击“进入房间”或“准备游戏”时调用。
  • 状态衔接:调用此接口后,再调用 startGame 系列接口,SDK 将直接复用此预启动的状态,实现“秒开”。