動的な画像の読み込み方法を教えてください

42 views
Skip to first unread message

新規です

unread,
Feb 13, 2025, 6:43:12 AM2/13/25
to 宴ユーザーグループ
いつも大変お世話になっております。
昨日このソフトを購入した者です。

URLで指定した画像を読み込みたいのですが、可能でしょうか?
理想としては、シナリオファイルのTextureの項目にファイル名ではなくURLを貼ることで表示ができたら嬉しいです。

お忙しいところ申し訳ありませんが、よろしくお願いいたします。

マッドネスラボ

unread,
Feb 13, 2025, 6:47:45 AM2/13/25
to 宴ユーザーグループ
すみません。できません。
10年近く前にはその機能を作っていたのですが、非常に不安定でサポートが困難なため現在はその機能は廃止しています。




2025年2月13日木曜日 20:43:12 UTC+9 新規です:

新規です

unread,
Feb 13, 2025, 7:19:04 AM2/13/25
to 宴ユーザーグループ
ご返信ありがとうございます。

BundleAsset化することなく、URLの画像をシナリオの途中で読み込みたいのですが、そのための方法はありますでしょうか?
もし無ければプログラムをカスタムしても良いかなと思っており、そのための情報を教えていただきたいです。


2025年2月13日木曜日 20:47:45 UTC+9 マッドネスラボ:

マッドネスラボ

unread,
Feb 13, 2025, 8:15:58 AM2/13/25
to 宴ユーザーグループ
やるとすれば、宴のファイルマネージャーのロード処理を一部書き換えるという形になります。
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 新規です:
Reply all
Reply to author
Forward
0 new messages