setGameStartOptions:options:
设置游戏启动选项(多参数版)
setGameStartOptions:options: 用于在小游戏启动前,通过多个维度精细化配置其运行环境。这种带有两个参数的声明通常用于区分基础启动项与扩展业务配置,或者用于区分引擎配置与用户自定义数据。
方法声明
objectivec
/**
* 设置游戏启动选项。
* @param gameOptions 针对引擎和框架层面的配置(如入口路径、调试模式)。
* @param businessOptions 针对业务逻辑层面的配置(如透传给 JS 的初始变量、渠道信息)。
*/
- (void)setGameStartOptions:(NSDictionary *)gameOptions options:(NSDictionary *)businessOptions;参数说明
| 参数名 | 类型 | 描述 |
|---|---|---|
| gameOptions | NSDictionary | 引擎配置:控制 entryPath (入口)、debug (调试开关)、v8Flags 等。 |
| businessOptions | NSDictionary | 业务配置:注入 envVars、userInfo、roomID 等供游戏脚本直接读取。 |
运行行为
- 参数解耦:将技术层面的引擎参数与业务层面的逻辑参数分离,便于模块化管理。
- 环境预热:在调用
start:之前,这些配置会被注入到 JavaScript Runtime 的全局上下文中。 - 持久化策略:该设置在当前
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或自定义的对象实例。