やるとすれば、宴のファイルマネージャーのロード処理を一部書き換えるという形になります。
AssetFileManager.GetCustomLoadManager().OnFindAsset にコールバックを登録することで、ファイルのロード処理に割り込みを書けることができます。
assetに何も代入せしなければ通常のロード処理になります。
if (fileInfo.FileType != AssetFileType.Texture) return;
などとして、テクスチャ以外は処理をしないようにするなどしてください。
ファイルの命名規則(先頭にhttpなどがある)で判別して、合致する場合のみassetに独自クラスのインスタンスを代入して渡す形にすれば、一部のテクスチャのみURLからロードするといったことも可能です。
Unityでテクスチャをロードする処理は、下記のドキュメントを参考にしてください。
私が昔試作していた当時はWWW関係は別のクラスで、DownloadHandlerTextureもなかったため、また事情が違っているとは思うのでご注意ください。
ロードに関しては、テクスチャのインポート設定できず、Unityがランタイム上で自動的に作成する形式になってしまうため、その点が10年前は昔のWWWでは安定しなかった記憶があります。
アンロードに関しては、このUnityの公式ドキュメントにも特に言及がないので正確にはわからないのですが、個別の直接的なアンロード処理はおそらく実装されていないため、
定期的にunloadunusedassetsをかけてアプリ全体でリソースのアンロードをかけないとメモリがパンクする可能性があります。
(それで本当にアンロードできるかはわからないです)
また、アセットバンドルと違ってUnityの専用のファイルキャッシュ(一度DLしたデータを別のローカルに保存してサーバーからのロード回数を減らす)の仕組みは使えないです。
当時は、WWWそのものに別途キャッシュの仕組みもあった気がします。
ただ、逆に意図しない古いファイルがキャッシュされて拾ってきたりとかで、それを何らかの形でオフにしないと最新のファイルであることが保証されなかったり・・・など
たしかこの辺で、当時実験したときは非常に不安定だったり、実用上難しい速度だったりしました。
最新のAPIでどうなるかは私も試してないのでわかりません。
2025年2月13日木曜日 21:19:04 UTC+9 新規です: