CRIWARE Unity Plugin Manual  Last Updated: 2024-07-12
[CriFs] 批量安装数据

范例描述

概述

cri4u_samples_crifs_adv01_game_mini.png

本样例演示如何使用数据批量安装演示脚本BatchWebInstaller来进行批量安装。
BatchWebInstaller使用CriFsWebInstaller实现。
BatchWebInstaller的工作方式特点如下。
  • 可进行并行安装。
  • 当其中一个安装失败时,状态会迁移至ErrorOccured,随后如果其他正在进行的安装完成,则迁移至ErrorStopped状态。
  • 执行BatchWebInstaller.Stop时,正在进行中或者出错的要素会被退回至队列中。
    • 可以通过以下方式重启安装:调用BatchWebInstaller.Stop,等待安装状态迁移至“Stop”,然后调用BatchWebInstaller.Start。

操作

  • Initialize Install Queue
    清除BatchWebInstaller安装队列并添加新要素。
    已安装文件会被删除。

  • Start or Resume Batch Install按钮
    启动或重启批量安装。

  • Stop按钮
    停止批量安装。

场景信息


中间件 FileMajik PRO (CRI File System)
范例 进阶范例
存储路径 /CRIWARE/SDK/unity/samples/UnityProject/Assets/Scenes/crifilesystem/advanced/
场景文件 Scene_01_BatchWebInstall.unity


程序描述

void Start ()
{
// Initialize CriFsWebInstaller module
var config = CriFsWebInstaller.defaultModuleConfig;
config.numInstallers = installConcurrency;
CriFsWebInstaller.InitializeModule(config);
// Create BatchWebInstaller
batchWebInstaller = new BatchWebInstaller(installConcurrency);
InitializeInstallQueue();
}

初始化CriFsWebInstaller模块并生成BatchWebInstaller。
若要控制CriFsWebInstaller模块的行为,需要修改传递给CriFsWebInstaller.InitializeModule的配置参数。
同时新安装要素也会被加入队列。

private IEnumerator StartBatchWebInstall()
{
batchWebInstaller.Start();
while (true) {
// CriFsWebInstaller.ExecuteMain is executed in the BatchWebInstaller.Update
batchWebInstaller.Update();
if ((batchWebInstaller.status == BatchWebInstaller.Status.Complete) || (batchWebInstaller.status == BatchWebInstaller.Status.ErrorStopped)) {
break;
}
yield return true;
}
}

每帧执行BatchWebInstaller模块的定期处理,并等待批量安装完成的协程。
CriFsWebInstaller.ExecuteMain会在BatchWebInstaller.Update中被正确调用,不需要显式调用。

void OnDestroy()
{
// Destroy BatchWebInstaller
batchWebInstaller.Dispose();
batchWebInstaller = null;
// Finalize CriFsWebInstaller module
CriFsWebInstaller.FinalizeModule();
}

销毁BatchWebInstaller并终止CriFsWebInstaller模块。