start
启动游戏逻辑
start: 是小游戏生命周期的核心触发器。在执行完 create 并配置好相关启动选项后,调用此方法将正式加载游戏脚本、初始化渲染上下文,并向游戏发送第一条业务指令(通常是进入特定房间或显示特定界面的消息)。
方法声明
objectivec
/**
* 启动小游戏引擎。
* @param onShowMsg 启动时透传给游戏的初始消息字符串(推荐 JSON 格式)。
* 该消息会在游戏的 `onShow` 生命周期或首个逻辑入口中被捕获。
*/
- (void)start:(nullable NSString *)onShowMsg;参数说明
| 参数名 | 类型 | 必传 | 描述 |
|---|---|---|---|
| onShowMsg | NSString | 否 | 启动消息:包含如 roomID、token、role 等业务参数。如果不需传参,可传 nil 或 "{}"。 |
运行行为
- 脚本加载:引擎开始读取入口文件并执行 JavaScript 代码,初始化游戏世界。
- 生命周期触发:触发游戏内部的
onLaunch和onShow回调,并将onShowMsg解析后作为参数传入,决定初始界面。 - 状态迁移:执行成功后,游戏状态由
SUD_RT_GAME_STATE_WAITING (1)迁移至SUD_RT_GAME_STATE_RUNNING (2)。 - 异步准备:此方法触发后,资源预加载与脚本解析会在后台线程并行开展。
代码示例
通常在准备好房间信息和用户信息后调用:
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。