ビデオオブジェクトの動的なロード・解放

17 views
Skip to first unread message

桃山マサル

unread,
May 6, 2026, 2:21:32 AM (10 days ago) May 6
to 宴ユーザーグループ
お世話になっております。

ゲーム内でビデオオブジェクトのSprite(mp4形式)を使っているのですが、そのファイルがやや重いのか、該当のシーンでのロード時に遅延が発生します。

それを解消するため、あらかじめロードしておきたいと考えております。

以前の質問でStaticManagerを使った静的なロードの仕方は理解しているのですが、ビデオオブジェクトの数が多いため、各オブジェクトを必要なタイミング(例えばSpriteを使うシーンの開始時など)でロードし、任意のタイミング(シーン終了時など)で解放したいと考えております。

こちら可能でしょうか?

お忙しいとは存じますが、ご回答いただけますと助かります。

マッドネスラボ

unread,
May 6, 2026, 4:14:53 AM (10 days ago) May 6
to 宴ユーザーグループ
明示的にロードしておくコマンドなどはないので、そういった仕組みを作ってカスタムコマンドやSendMessage系のコマンドで呼び出す形になります。

既存のコードでは、
Assets/Utage/Scripts/TemplateUI/Gallery/UtageUguiSoundRoom.cs の protected virtual IEnumerator CoPlaySound(string path) メソッドがわかりやすいと思います。

AssetFileManager.Loadでロードして、
使用が終わったら、ロードしたファイルのUnuseメソッドで、参照オブジェクト(呼び出し元のコンポーネント)を解除する形になります。
                                            
以下サンプルになります。

public class SampleAssetLoader :          
MonoBehaviour
{                                        
//パスをキーにロード済みファイルを管理
Dictionary<string, AssetFile> loadedFiles = new ();

// 指定パスのファイルをロード開始
public void LoadFile(string path)
{
StartCoroutine(CoLoadFile(path));
}

//ファイルを非同期ロードし、完了まで待機
IEnumerator CoLoadFile(string path)
{
AssetFile file =
AssetFileManager.Load(path, this);
loadedFiles[path] = file;
while (!file.IsLoadEnd) yield
return null;
}

// 指定パスのファイルの使用を解除して辞書から除去
public void UnuseFile(string path)
{
if (!loadedFiles.TryGetValue(path,
    out AssetFile file))
{
return;
}
file.Unuse(this);
loadedFiles.Remove(path);
}

// 全ファイルの使用を一括解除
public void UnuseAll()
{
foreach (var file in
         loadedFiles.Values)
{
file.Unuse(this);
}
loadedFiles.Clear();
}

// 破棄時にリソースを自動解放
void OnDestroy()
{
UnuseAll();
}
}

・AssetFileManager.Load以外にAssetFileManager.Preloadというメソッドもあって、これはロードの優先順位が低いものなので、今回のケースではPreloadを使うほうがいいかもしれません。使い方は同じです。
・指定するpathはビデオの場合、プロジェクト名/Video/ビデオファイルのパス という形になるかと思います。


補足として、
ロードの負荷自体を下げるには次のような手段があります。
特に、条件付きの分岐を使っている場合は、「Preload Deep Jump If」の機能を使うことで分岐先の素材をあらかじめロードしておくことができるので、
もし重いロードが発生するのが条件付き分岐先なのであれば、この機能を試してみるとよいかもしれません。
ただし、宴のバージョンが4.1.8以上が必要になるので古いバージョンを使う必要がある場合は使用できません。

2026年5月6日水曜日 15:21:32 UTC+9 桃山マサル:

桃山マサル

unread,
May 9, 2026, 6:23:00 PM (7 days ago) May 9
to 宴ユーザーグループ
回答ありがとうございます!

現在回答内容の精査中ですが、時間がかかりそうなので、このスレッドは一旦クローズとさせてください。
また何かありましたらご連絡差し上げたいと思います。

お手数おかけしまして大変恐縮ですが、何卒宜しくお願い申し上げます。
2026年5月6日水曜日 17:14:53 UTC+9 マッドネスラボ:
Reply all
Reply to author
Forward
0 new messages