CRIWARE Unity Plugin Manual  Last Updated: 2024-07-12
[CriFs] 本地API封装

范例描述

概述

cri4u_samples_crifs_scene06_game_mini.png

该范例使用了中封装CRI File System (FileMajik PRO运行时库)的本地API的种类。

操作

  • 步骤1: 多路绑定CPK文件
    • Bind CPK File (Local) 按钮
      绑定一个本地CPK文件。

  • 步骤2: 加载文件
    • Load Image File 按钮
      从任何CPK文件中加载一个图片文件。

    • Load Text Bundle File 按钮
      从任何CPK文件中加载一个文本捆绑文件。

  • Stop 按钮
    停止加载。

  • Reset button
    将设定重置。

场景信息


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


程序描述



[程序概述]

该范例使用了封装CRI File System的本地API的种类。
它在不使用yield语句的情况下管理着Update函数中的状态。
它从"sample.cpk"打包文件中加载"criware.png"图片文件以及"sample_text.txt"文本文件。
"Binder(绑定器)"是一个虚拟驱动。当你使用BindCpk函数将打包文件(CPK file)绑定至绑定器时,你可以从CPK文件中加载文件。

同样可以绑定多个打包文件。BindCpk函数返回绑定ID。绑定多个文件被称为"multi-binding(多路绑定)"。
你可以指定绑定器以及loader(加载器)中的文件名,来加载一个文件。

  1. 将"sample.cpk"绑定至 CriFsBinder 绑定器(使用BindCpk函数)。
  2. 确认绑定已在Update函数中完成。(使用GetStatus函数)
  3. 指定一个绑定器以及文件名("criware.png" 以及 "CharMw.unity3d"),并且指示加载器开始加载。(使用Load函数)
  4. 确认加载器已在Update函数中完成加载。(使用GetStatus函数)
  5. 如需取消加载,请执行加载器的Stop函数。

== Tips ==
  • 如需更快地加载多个文件,请同时使用多个加载器。
  • 你可以绑定一个CPK文件以更快地获得文件们的大小。当你试图获取未打包文件的大小时,该进程将被阻拦。


[程序描述]

(1) 创建一个绑定器以及多个加载器
binder = new CriFsBinder(); /* 绑定器 */
loader1 = new CriFsLoader(); /* 用于图片文件的加载器 */
loader2 = new CriFsLoader(); /* 用于文本文件的加载器 */
当应用程序启动时,创建一个绑定器以及几个加载器。
该范例直接使用这些对象的构造器来创建它们。
在后台使用多个加载器同时加载,将比使用一个加载器陆续加载多个文件更快。

(2) 使用绑定器来注册打包文件(CPK文件)
bind_id = binder.BindCpk(null, path);
将CPK文件绑定至绑定器。
BindCpk函数将开始加载CPK文件的目录信息。
你可以绑定多个CPK文件至一个绑定器。BindCpk函数返回一个绑定ID,它能够用于识别CPK文件。
if ( CriFsBinder.GetStatus(bind_id) == CriFsBinder.Status.Complete ) {
bind_stat = BindStatus.Complete;
}
使用GetStatus函数中的指定绑定ID,来确认绑定是否成功完成。

(3) 加载文件
int file_size = (int)binder.GetFileSize(path);
buffer1 = new byte[file_size];
loader1.Load(binder, path, 0, file_size, buffer1);
指定绑定器中的文件名,以获取文件大小。如果CPK已绑定,你可以之间从内存的目录信息中获取文件大小。
如果绑定器中没有任何文件被绑定,你依然可以获取本地文件或网络文件的大小,然而GetFileSize函数将被阻止。如需避免该问题,请使用一个CPK文件。
执行Load函数将开始文件的加载。
文件必须以提供绑定器和文件名来被指定。第三个参数为文件中的偏移量。如指定了偏移量,你可以从任何位置开始加载文件。
if ( loader1.GetStatus() == CriFsLoader.Status.Complete ) {
this.texture = new Texture2D(0, 0);
this.texture.LoadImage(buffer1);
loader1.Stop();
}
使用GetStatus函数来确认加载是否完成。
如果状态返回为 乬Complete乭,那么加载便已完成。
如果出现了加载错误,将返回 乬Error乭 状态。
当加载已完成时,buffer1将含有数据。
(4) 停止加载一个文件
this.loader1.Stop();
this.loader2.Stop();
执行Stop函数后,状态将变更为 乬Stop乭。
你可以取消加载。这对于用户来说或许会更加方便。

(5) 释放资源
this.loader1.Dispose();
this.loader2.Dispose();
this.binder.Dispose();
当你关闭场景或销毁加载器和绑定器时,请执行Dispose函数。
本地API所使用的资源将被释放。