通过 GameId 加载游戏
本文档介绍如何通过 GameId 启动游戏,并将游戏视图加载到应用页面中。
概述
通过 SUDOP.startGame 接口,可以根据游戏的唯一标识 gameId 启动游戏。
该接口是一个全自动流程接口,SDK 会自动完成:
- 游戏资源检查(未下载自动下载)
- 运行时初始化
- 脚本引擎加载
- 游戏实例创建
- 回调返回游戏视图(Game View)
开发者只需在成功回调中将 View 添加到 UI 容器中即可完成游戏加载。
完整流程
启动游戏前,必须依次完成以下步骤:
- 初始化 SDK(
initSDK) - 用户鉴权(
auth) - 启动游戏(
startGame)
示例代码
java
SUDOP.initSDK(context, "Your appId", "Your appKey", new SUDOPInitSDKListener() {
@Override
public void onSuccess() {
SUDOP.auth("Your user signature", new SUDOPAuthListener() {
@Override
public void onSuccess() {
SUDOP.startGame("You need to load the game id", new SUDOPStartGameListener() {
@Override
public void onGamePkgDecrypt(GamePkgDecryptHandle handle, String filePath) {
// 可选回调:用于游戏包解密(默认可不实现)
}
@Override
public void onCreated(SUDRTGameHandle gameHandle) {
// 游戏实例创建完成,可在此设置参数或注入交互对象
}
@Override
public void onSuccess(String gameId, SUDRTGameHandle gameHandle) {
// 游戏加载成功
View gameView = gameHandle.getGameView();
// 将游戏View添加到你的布局容器中
// container.addView(gameView);
}
@Override
public void onFailure(int retCode, String retMsg) {
// 游戏加载失败
}
});
}
@Override
public void onFailure(int retCode, String retMsg) {
// 鉴权失败
}
});
}
@Override
public void onFailure(int retCode, String retMsg) {
// SDK 初始化失败
}
});核心接口说明
startGame
java
public static SUDOPGameTask startGame(
String gameID,
SUDOPStartGameListener listener
);参数说明
| 参数 | 类型 | 描述 |
|---|---|---|
| gameID | String | 必填,游戏唯一标识 |
回调说明
SUDOPStartGameListener
void onGamePkgDecrypt(GamePkgDecryptHandle handle, String filePath)游戏包解密回调(可选实现)
void onCreated(SUDRTGameHandle gameHandle)游戏实例创建完成 可用于注入 JSBridge / 设置启动参数
void onSuccess(String gameId, SUDRTGameHandle gameHandle)游戏启动成功核心操作:
java
View gameView = gameHandle.getGameView();将该 View 添加到你的布局中即可完成加载
void onFailure(int retCode, String retMsg)游戏启动失败常见原因:
- gameId 错误
- 网络异常
- 鉴权失败
GamePkgDecryptHandle
void success(String decryptedFilePath, boolean isDeleteFile)解密成功void fail(int retCode, String retMsg)解密失败
运行机制
调用 startGame 后,SDK 内部执行:
- 检查游戏资源(自动下载)
- 初始化运行环境
- 创建游戏实例
- 返回 Game View
如果之前调用过 preDownload 或 preLoad,可加速启动
UI 集成说明
你需要准备一个容器,例如:
java
FrameLayout container;在 onSuccess 中:
java
container.addView(gameView);注意事项
1. 必须完成初始化和鉴权
顺序不可错:
text
initSDK → auth → startGame2. 必须持有 GameTask
java
SUDOPGameTask gameTask = SUDOP.startGame(...);在页面销毁时:
java
gameTask.destroy();3. 单实例运行
建议同一时间只运行一个游戏实例。
4. UI 线程安全
onSuccess 回调在主线程执行,可以直接操作 UI。
总结
text
通过 gameId 加载游戏 = 调用 startGame → 获取 GameView → addView上述代码示例为Android的代码示例,iOS亦是相同流程,具体可查看:iOS API