Skip to content

setGameStartOptions:options:

设置游戏启动选项(多参数版)

setGameStartOptions:options: 用于在小游戏启动前,通过多个维度精细化配置其运行环境。这种带有两个参数的声明通常用于区分基础启动项扩展业务配置,或者用于区分引擎配置用户自定义数据


方法声明

objectivec
/**
 * 设置游戏启动选项。
 * @param gameOptions 针对引擎和框架层面的配置(如入口路径、调试模式)。
 * @param businessOptions 针对业务逻辑层面的配置(如透传给 JS 的初始变量、渠道信息)。
 */
- (void)setGameStartOptions:(NSDictionary *)gameOptions options:(NSDictionary *)businessOptions;

参数说明

参数名类型描述
gameOptionsNSDictionary引擎配置:控制 entryPath (入口)、debug (调试开关)、v8Flags 等。
businessOptionsNSDictionary业务配置:注入 envVarsuserInforoomID 等供游戏脚本直接读取。

运行行为

  1. 参数解耦:将技术层面的引擎参数与业务层面的逻辑参数分离,便于模块化管理。
  2. 环境预热:在调用 start: 之前,这些配置会被注入到 JavaScript Runtime 的全局上下文中。
  3. 持久化策略:该设置在当前 gameHandle 活跃期间持续有效。

代码示例

objectivec
// 1. 定义引擎级配置
NSDictionary *gameOpts = @{
    @"entryPath": @"game.js",
    @"debug": @(NO)
};

// 2. 定义业务级配置
NSDictionary *bizOpts = @{
    @"appId": @"wx123456",
    @"subChannel": @"promotion_A",
    @"launchData": @{@"referrer": @"group_chat"}
};

// 3. 应用配置
[self.gameHandle setGameStartOptions:gameOpts options:bizOpts];

// 4. 随后启动游戏
[self.gameHandle start:@"{}"];

注意事项

  • 时机严控:必须在 create 之后、start: 之前调用。如果在游戏运行中调用,参数可能无法被 JS 脚本在 onLaunch 生命周期中捕获。
  • 空值处理:如果某一部分没有特殊配置,通常可以传入一个空的 @{} 字典,但不建议传入 nil,除非 API 文档明确允许。
  • 序列化一致性:字典内部仅支持 JSON 兼容的数据类型(字符串、数字、布尔、数组、字典),不支持传递原生的 UIImage 或自定义的对象实例。