preStartGameByDirectoryPath
预启动游戏(通过本地目录路径)
preStartGameByDirectoryPath 是启动速度最快的预处理接口。它直接加载已解压的游戏资源目录,并立即激活游戏的脚本逻辑与业务流程。由于省去了网络下载和压缩包解压的时间,该接口能以最小的 I/O 开销让游戏在后台进入运行状态。
此接口常用于本地开发调试、资源预置(从 Assets 目录拷贝到私有目录)或业务侧已经完成资源管理逻辑的场景。
方法声明
java
/**
* 预启动游戏,根据游戏本地目录路径
*
* @param directoryPath directoryPath
* @param params 包含本地目录路径及初始化配置的参数对象
* @param listener 预启动状态监听器
* @return SUDOPGameTask 任务句柄,用于管理预启动的游戏实例
*/
public static SUDOPGameTask preStartGameByDirectoryPath(String directoryPath, SUDOPGamePackageParams params, SUDOPPreStartGameListener listener) ;参数说明
| 属性 | 类型 | 描述 |
|---|---|---|
| directoryPath | String | 必填。游戏资源文件夹的绝对路径(目录内需包含 app.json 等入口文件)。 |
1. SUDOPGamePackageParams
用于指定具体的资源下载链接:
| 属性 | 类型 | 描述 |
|---|---|---|
| version | String | 必填。游戏版本 |
| fid | String | 游戏包文件指纹 |
| fidType | FIDType | 游戏包文件指纹生成方式 |
| appGameID | String | 必填。指定gameID |
| appCPID | String | 指定游戏开发者的CP ID |
| appGroupID | String | 指定游戏开发者的Group ID |
2. FIDType
用于指定游戏包文件指纹生成方式
| 属性 | 类型 | 描述 |
|---|---|---|
| MD5 | enum | MD5算法 |
| CRC32 | enum | CRC32算法 |
| SHA1 | enum | SHA1算法 |
| SHA256 | Strenuming | SHA256算法 |
2. SUDOPPreStartGameListener
void onSuccess(String gameId, SUDRTGameHandle handle):预启动成功。游戏已在后台完成初始化并执行了首屏逻辑。void onFailure(int retCode, String retMsg):预启动失败。常见原因:目录不存在、缺少核心配置文件、权限受限。
运行行为
- 零压缩开销:直接映射本地文件系统,绕过解压步骤,极大降低 CPU 瞬时负载。
- 逻辑全激活:加载脚本引擎后立即执行游戏的
onLoad函数,预加载游戏配置、建立服务端长连接(若有)。 - 渲染准备:在后台内存中构建渲染树,准备好首屏帧数据。
- 状态复用:当用户正式进入游戏时,SDK 直接将此后台实例的 Surface 挂载到 UI 视图上。
代码示例
java
String directoryPath = getFilesDir().getAbsolutePath() + "/local_game_storage/game_101/";
SUDOPGamePackageParams params = new SUDOPGamePackageParams();
params.version = "gamePkgVersion";
params.fid = "2e7ca170f33629c7baf4dc430c541c43";
params.fidType = FIDType.MD5;
params.appGameID = "appGameID";
params.appCPID = "Game Developer id";
params.appGroupID = "Game developer group id";
SUDOPGameTask preLoadTask = SUDOP.preStartGameByDirectoryPath(directoryPath, params, new SUDOPPreStartGameListener() {
@Override
public void onSuccess(String gameId, SUDRTGameHandleProvider provider) {
}
@Override
public void onFailure(int retCode, String retMsg) {
}
});
// 若不启动游戏并退出场景,务必销毁任务
// task.destroy();注意事项
- 路径完整性:开发者需确保
directoryPath指向的文件夹内文件结构完整。 - 资源锁定:预启动期间,SDK 可能会占用该目录下的部分文件资源。
- 内存警示:虽然 I/O 开销低,但脚本运行产生的内存占用与其他预启动方式一致,建议在设备内存充足时使用。