Skip to content

create

初始化小游戏运行环境

create 是开启小游戏生命周期的第一个核心指令。它负责从小游戏“不可用”状态构建出运行所需的基础环境,包括分配内存、初始化渲染引擎(Metal/GPU)以及启动 JavaScript 虚拟机(JSC)。此时引擎处于通用初始化状态,尚未绑定具体游戏业务。


方法声明

objectivec
/**
 * 初始化小游戏运行环境。
 * 操作成功后,小游戏实例将进入 `WAITING` 状态。
 * 该阶段仅初始化引擎基础能力,不依赖具体游戏配置。
 */
- (void)create;

参数说明

参数名类型必传描述
--该方法不接受参数,仅执行底层环境初始化。

运行行为

  1. 资源分配:SDK 启动底层的 C++ 核心引擎,并为小游戏分配独立的渲染表面(Rendering Surface)。
  2. 环境加载:初始化 JavaScriptCore 虚拟机,加载小游戏的基础库(Base Lib)和运行环境脚本。
  3. 状态迁移:执行成功后,状态由 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 自动忽略。