明示的にロードしておくコマンドなどはないので、そういった仕組みを作ってカスタムコマンドや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 桃山マサル: