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

范例描述

概述

cri4u_samples_crifs_scene05_game_mini.png
该范例使用了目录绑定功能。
目录绑定功能将文件绑定至指定目录。 当目录绑定时,没有文件会被打开。 只有在文件被访问的时候(比如加载它们),文件才会被打开,文件大小也才会被获取。
该过程比使用CPK文件无效率得多,因为在使用CPK文件时,文件能提前打开,文件大小也能提前获取。
因此我们推荐你在启动应用程序前,将文件打包成更有效率的CPK文件。然而,目录绑定可用于开发阶段。
在此范例中,对StreamingAssets下不同层级结构中的目录进行多路绑定。 我们假设早期在开发阶段提供的数据文件存储于StreamingAssets中, 并且假定数据文件将被更新到另一个目录。
数据创建者只需将最新文件放在指定目录中, 游戏就可以更新数据文件而无需对本身进行任何更改。

操作方法

  • 步骤1: 绑定目录
    • Bind Base Directory 按钮
      绑定基本目录。

    • Bind Update Directory 按钮
      绑定您要放置更新文件的目标目录。

    • Unbind Directory 按钮
      解除目录的绑定。

  • 步骤2: Load File
    • Load Text File 按钮
      从目录中加载一个文本文件。

  • Reset 按钮
    将设定重置。


场景信息


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


程序描述

this.binder = new CriFsBinder();

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

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

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

/* 等待绑定完成 */
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()来设置查找的优先顺序。
该范例使用多路绑定来绑定本地目录以及远程服务器上的目录。
如需了解更多有关多路绑定的信息,请查看 [CriFs] 目录绑定

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

当加载文件时,指定多路绑定的绑定器。
目录的绑定将以优先顺序进行查找,然后文件将被加载。
在此范例中,因为更新文件的目标目录的搜索优先级被提高,因此,如果此目录中的文件被更新,则应用程序将优先从这里加载文件。