CRIWARE Unity Plugin Manual  Last Updated: 2024-04-24
[CriAtom]バックグラウンドロード

サンプル内容

概要

cri4u_samples_criatom_adv01_game_mini.png

BGMを再生しながら、バックグラウンドでファイルを読み込むサンプルです。

操作方法

  • [Playback Streaming BGM]ボタン
    BGMのストリーム再生を開始します。

  • [Load Image File (Local)]ボタン
    ローカルにあるイメージファイルを読み込み、表示します。

  • [Delete Images]ボタン
    表示したイメージファイルをすべて削除します。

シーン情報


ミドルウェア CRI ADX (CRI Atom)
サンプル Advancedサンプル
格納場所 /cri/unity/samples/UnityProject/Assets/Scenes/criatom/advanced/
シーンファイル Scene_01_BackgroundLoadData.unity


プログラムの解説

画像ファイルの読み込みについて

画像ファイルのロードはCriFsUtilityを使用することで、音声を止めずに行う事ができます。
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++));
}