CRIWARE Unity Plugin Manual  Last Updated: 2024-07-12
[CriAtom] 后台加载

范例内容

概述

cri4u_samples_criatom_adv01_game_mini.png

此范例演示了在后台读取文件时播放BGM(背景音乐)。

操作方法

  • [Playback Streaming BGM] 按钮
    开始BGM的串流播放。

  • [Load Image File (Local)] 按钮
    读取并显示本地图像文件。

  • [Delete Images] 按钮
    删除所有显示的图像文件。

场景信息


中间件 CRI ADX (CRI Atom)
范例 进阶范例
存储路径 /CRIWARE/SDK/unity/samples/UnityProject/Assets/Scenes/criatom/advanced/
场景文件 Scene_01_BackgroundLoadData.unity


程序说明

读取图像文件

通过使用CriFs Utility,可以在不停止音频的情况下加载图像文件。
例如,通过CRI File System,当在游戏过程中播放音频(CRI Atom)或视频(CRI Mana)期间的串流负载发生波动时,
可以适当地管理数据流率,因此声音和视频可以连续播放而不会中断。
(补充)即使带宽极低,视频播放等时间管理也不会丢失。

/* 加载图像文件 */
private IEnumerator LoadImageFile(string path, int request_index)
{
lockLoadImageFile++;
/* 加载文件的请求 */
var request = CriFsUtility.LoadFile(path);
/* 等待加载完成 */
yield return request.WaitForDone(this);
lockLoadImageFile--;
if (request.error == null) {
/* 加载成功后,则从字节创建纹理 */
this.textures[request_index] = new Texture2D(0, 0);
this.textures[request_index].LoadImage(request.bytes);
} else {
Debug.LogWarning("Failed to load image file.");
}
}
...
if (GUI.Button(new Rect(Screen.width - 280, 90, 240, 40), "Load Image File (Local)")) {
/* 设置本地图像文件路径 */
dir = CriWare.streamingAssetsPath;
/* 确保单击了用于加载图像文件的GUI按钮 */
requestLoadImage = true;
}
...
if (requestLoadImage) {
/* 有加载图像文件的请求时,执行加载处理 */
/* 在此范例中,执行了多次加载以增加I/O负载。 */
int i = 0;
StartCoroutine(this.LoadImageFile(Path.Combine(dir, "criware.png"), i++));
StartCoroutine(this.LoadImageFile(Path.Combine(dir, "sample_image1.png"), i++));
StartCoroutine(this.LoadImageFile(Path.Combine(dir, "sample_image2.png"), i++));
}