CRIWARE Unity Plugin Manual  Last Updated: 2024-07-12
从CPK文件中加载文件

数据流程

使用FileMajik PRO,你能将多个在应用程序中使用的数据文件打包为一个文件,并且在运行状态下随时访问它们。
(你可以使用文件名或ID来查找CPK文件中的文件。)

crifs2_tutor02_dataflow_small.png
打包文件被称作 "CPK 文件" (CRI packed file(打包文件))。
"CPK File Builder" 适用于创建CPK文件的工具。
创建CPK文件非常简单,拖放(含有希望能在工具中使用的文件)目录即可。

加载文件的概述

一下图片展示了从CPK文件中加载文件的过程。

fmpu_keys_fileload_cpk_system_mini.png

首先,你必须在"binder"(绑定)中注册CPK文件。
Binder(绑定器)与虚拟驱动或设备相似。
绑定文件可以让你使用绑定器来访问CPK文件中的文件 (content files(内容文件))。
请指定绑定器以及内容文件的名称,然后使用 loader 对象来加载内容文件。

过程流程

  • (1) 创建绑定器
    创建一个从CPK文件加载文件的绑定器。

    this.binder = new CriFsBinder();

  • (2) 绑定一个CPK文件
    将一个CPK文件绑定至刚才创建的绑定器。
    你可以绑定一个本地CPK文件,同样也可以绑定一个远程服务器上的CPK文件。

    • 绑定一个本地CPK文件
      CriFsBindRequest request = CriFsUtility.BindCpk(this.binder, "StreamingAssets/sample.cpk");

    • 绑定一个远程服务器上的文件
      CriFsBindRequest request = CriFsUtility.BindCpk(this.binder, "http://crimot.com/sdk/sampledata/crifilesystem/sample.cpk");
程序发出文件绑定请求,文件将在后台异步绑定。
Yield语句等待完成绑定。
如果绑定成功,你将从请求中获取一个绑定ID。

yield return request.WaitForDone(this);
if (request.error == null) {
this.bindId = request.bindId;
}

  • (3) 加载文件
    协同程序用于加载文件。
    首先,程序将发出从CPK文件中加载文件的请求。Yield语句等待加载完成。
    本地和远程CPK文件的载入步骤是相同的。

    CriFsLoadFileRequest request = CriFsUtility.LoadFile(this.binder, contentfile);

  • (4) 解绑并销毁绑定器
    取消绑定的方法如下:

    CriFsBinder.Unbind(this.bindId);

    同样需要销毁绑定器。

    this.binder.Dispose();

[注意]
如需实际代码,请参照 " [CriFs] 安装数据 " 范例。