create
初始化小游戏运行环境
create 是开启小游戏生命周期的第一个核心指令。它负责从小游戏“不可用”状态构建出运行所需的基础环境,包括分配内存、初始化渲染引擎(Metal/GPU)以及启动 JavaScript 虚拟机(JSC)。此时引擎处于通用初始化状态,尚未绑定具体游戏业务。
方法声明
objectivec
/**
* 初始化小游戏运行环境。
* 操作成功后,小游戏实例将进入 `WAITING` 状态。
* 该阶段仅初始化引擎基础能力,不依赖具体游戏配置。
*/
- (void)create;参数说明
| 参数名 | 类型 | 必传 | 描述 |
|---|---|---|---|
| 无 | - | - | 该方法不接受参数,仅执行底层环境初始化。 |
运行行为
- 资源分配:SDK 启动底层的 C++ 核心引擎,并为小游戏分配独立的渲染表面(Rendering Surface)。
- 环境加载:初始化 JavaScriptCore 虚拟机,加载小游戏的基础库(Base Lib)和运行环境脚本。
- 状态迁移:执行成功后,状态由
SUD_RT_GAME_STATE_UNAVAILABLE (0)迁移至SUD_RT_GAME_STATE_WAITING (1)。
代码示例
objectivec
// 1. 注册状态监听
[self.gameHandle setGameStateListener:self];
// 2. 触发创建逻辑(此时无需配置 gameId)
[self.gameHandle create];
#pragma mark - SUDRTGameStateChangeListener 回调
- (void)onStateChangedFrom:(int)fromState to:(int)toState {
if (toState == SUD_RT_GAME_STATE_WAITING) {
NSLog(@"引擎环境就绪,进入 WAITING 状态");
dispatch_async(dispatch_get_main_queue(), ^{
// 3. 获取 View 并添加到容器中展示
UIView *gameView = [self.gameHandle getGameView];
if (gameView) {
gameView.frame = self.view.bounds;
[self.view addSubview:gameView];
}
// 4. 后续步骤:设置参数并启动具体游戏
// [self.gameHandle setGameStartOptions:gameId options:options];
// [self.gameHandle start:onShowMsg];
});
}
}注意事项
- 独立性:
create仅与引擎生命周期相关,此时引擎尚未加载具体的游戏脚本。 - 线程安全:尽管初始化过程涉及后台线程,但调用
create以及后续操作 UI(如getGameView)建议都在 主线程 发起。 - 内存管理:一旦调用
create,引擎将占用显存和内存。如果用户在环境创建后未进入游戏就退出,务必调用destroy以释放资源。 - 重复调用:如果当前实例已处于
WAITING或更高级状态,重复调用create将被 SDK 自动忽略。