Skip to content

start

启动游戏逻辑

start: 是小游戏生命周期的核心触发器。在执行完 create 并配置好相关启动选项后,调用此方法将正式加载游戏脚本、初始化渲染上下文,并向游戏发送第一条业务指令(通常是进入特定房间或显示特定界面的消息)。


方法声明

objectivec
/**
 * 启动小游戏引擎。
 * @param onShowMsg 启动时透传给游戏的初始消息字符串(推荐 JSON 格式)。
 * 该消息会在游戏的 `onShow` 生命周期或首个逻辑入口中被捕获。
 */
- (void)start:(nullable NSString *)onShowMsg;

参数说明

参数名类型必传描述
onShowMsgNSString启动消息:包含如 roomIDtokenrole 等业务参数。如果不需传参,可传 nil"{}"

运行行为

  1. 脚本加载:引擎开始读取入口文件并执行 JavaScript 代码,初始化游戏世界。
  2. 生命周期触发:触发游戏内部的 onLaunchonShow 回调,并将 onShowMsg 解析后作为参数传入,决定初始界面。
  3. 状态迁移:执行成功后,游戏状态由 SUD_RT_GAME_STATE_WAITING (1) 迁移至 SUD_RT_GAME_STATE_RUNNING (2)
  4. 异步准备:此方法触发后,资源预加载与脚本解析会在后台线程并行开展。

代码示例

通常在准备好房间信息和用户信息后调用:

objectivec
// 1. 构造启动业务参数
NSDictionary *startParams = @{
    @"roomId": @"123456",
    @"appId": @"your_app_id"
};

// 2. 转换为 JSON 字符串
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:startParams options:0 error:nil];
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];

// 3. 正式启动游戏 (Selector: start:)
[self.gameHandle start:jsonString];

NSLog(@"[SUD] 游戏启动指令已发送,等待脚本运行...");

注意事项

  • 状态检查:调用前请确保 gameHandle 已创建且未销毁。若在 UNAVAILABLE 状态下调用,启动将失败。
  • 消息格式:虽然参数是 NSString,但强烈建议使用标准 JSON 格式。非 JSON 字符串可能导致游戏端解析异常。
  • 非立即显示start: 仅代表逻辑开始运行。要让画面正式渲染并响应触摸,通常还需后续调用 play