CRIWARE Unity Plugin Manual  Last Updated: 2024-07-12
[CriFs] 多路绑定

范例描述

概述

cri4u_samples_crifs_scene04_game_mini.png
在此范例中,多个CPK文件绑定到一个Binder。 这称为多路绑定
普通绑定和多路绑定的区别
通常,通过绑定加载文件时,将从被绑定的CPK中搜索文件。 对于多路绑定,会横跨复数个CPK搜索此文件。
使用多路绑定的例子
例如,可以通过多路绑定旧CPK和仅包含差异内容的新CPK,而不是对旧CPK整个进行更新,从而降低操作成本。
此示例使用两个CPK文件。 在这里,一个CPK文件被视为另一个CPK文件的更新包(差异文件)。 基本CPK文件中包含两名角色的图像文件。 差异CPK文件中仅包含一名角色的图像文件。假定该图像文件是“更新图像文件”。
始终从更新包加载
加载文件时,需要优先参照更新包(差异文件)CPK文件, 因此对于每个CPK绑定ID,需使用CriFsBinder.SetPriority()设置优先级。
像此示例一样,通过将应用程序所需的所有文件包含在本地CPK、将每个文件的更新部分打包在更新侧CPK中, 然后进行多路绑定,可以达到让程序加载逻辑无需分辨是原有文件还是更新文件,用同一段代码就能完成加载的效果。
更新包侧的CPK文件仅包含更新的“sample_image2.png”。 因此,如果访问另一个文件,将从本地CPK读取文件。

操作

  • 步骤1: 多路绑定CPK文件
    • Bind Base CPK File 按钮
      绑定本地基本CPK文件。

    • Bind Update CPK File 按钮
      绑定本地差异CPK文件。

    • Unbind CPK File 按钮
      取消绑定CPK文件。

  • 步骤2: Load File
    • Load Image File 1 按钮
      从多路绑定的CPK文件中读取图像文件1。

    • Load Image File 2 按钮
      从多路绑定的CPK文件中读取图像文件2。

  • Reset 按钮
    回到初始状态。

场景信息


中间件 FileMajik PRO (CRI File System)
范例 Basic samples(基础范例)
存储路径 /CRIWARE/SDK/unity/samples/UnityProject/Assets/Scenes/crifilesystem/basic/
场景文件 Scene_04_MultiBind.unity


程序描述

this.binder = new CriFsBinder();

首先,在应用程序中创建一个绑定器。
将文件,CPK文件等绑定至该绑定器。

/* 将CPK文件的内容绑定至指定的绑定器句柄 */
var request = CriFsUtility.BindCpk(this.binder, null, path);

发送绑定CPK文件的请求。绑定将在后台异步进行。
设置目标绑定器。使用CPK文件的路径来绑定。

/* 等待绑定完成 */
yield return request.WaitForDone(this);
if (request.error == null) {
:
:

等待绑定CPK文件的完成。
如果返回的是null,那么绑定便成功了。

/* 如果绑定成功,请将binding(绑定)ID存储于应用程序 */
/* Binding ID将在之后用于解除绑定 */
this.bindId[bind_index] = request.bindId;
/* 设定查找的优先顺序 */
/* 数值越大就越优先。 */
/* 该范例总是在查找本地CPK前查找更新的CPK。 */
CriFsBinder.SetPriority(this.bindId[bind_index], bind_index);

如果绑定成功,应用程序必须存储binding ID,它是"request"对象的一员。
指定该binding ID并使用CriFsBinder.SetPriority()来设置查找的优先顺序。
多次为一个绑定器进行绑定便为多路绑定。

/* 将文件加载请求发送至绑定CPK文件的绑定器 */
var request = CriFsUtility.LoadFile(this.binder, path);
/* 等待加载完成 */
yield return request.WaitForDone(this);

当加载文件时,指定多路绑定的绑定器。
CPK文件的绑定将以优先顺序进行查找,然后文件将被加载。