CRIWARE Unity Plugin Manual
Last Updated: 2024-07-12
[CriFs] 多路绑定
范例描述
概述
在此范例中,多个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文件的绑定将以优先顺序进行查找,然后文件将被加载。
Copyright (c) CRI Middleware Co., Ltd. 1.8.10