私はunity3d www
を使ってWebサーバーから画像をダウンロードし、それを私のローカルストレージに保存しました。私が持っている唯一のチェックはSystem.IO.File.Exists()
で、既にダウンロードされているかどうかを確認することです。私の問題は、Webサーバーからのイメージが更新されたとき、または同じ正確なファイル名で置き換えられたときに再ダウンロードされないことです。私もwww.responseHeaders
を試しましたが、画像がダウンロードされると利用可能になります。私はassetbundleについて知っていますが、私はただ一つの画像に対してassetbundleを作成したくありません。画像が既にダウンロードされているかどうかを確認しますか?
編集:ここでは
がわずかに変更され、私のコードです。 Fist webserverに接続して、イメージURLを含むすべてのプロジェクトデータをjsonタイプのデータ配列として取得します。次に、ダウンロードする画像のURLを持つ配列をループします。
void ConnectToWeb()
{
StartCoroutine(AppManager.Instance.WebRequest("http://www.google.com",
(AppManager.HttpResponse callback) =>
{
if (callback.ResponseCode == 0 || callback.ResponseCode != 200)
{
throw new ArgumentException(callback.Error);
}
if (callback.Done == true)
{
StartCoroutine(LoadData(callback.JsonResponse));
}
})
);
}
private IEnumerator LoadData(JsonData itemData)
{
for (int i = 0; i < itemData["results"].Count; i++)
{
if (!System.IO.File.Exists(itemData["results"][i]["picture_name"].ToString()))
{
WWW www = new WWW(itemData["results"][i]["picture_url"].ToString());
while (!www.isDone)
{
Debug.Log("downloaded " + (www.progress * 100).ToString() + "%...");
yield return null;
}
File.WriteAllBytes(imagePath, www.bytes);
}
}
}
イメージをダウンロードして保存するために使用しているコードを追加してください。 – Programmer
これを実現する最良の方法は、イメージのハッシュを保存し、ハッシュが変更された場合にWebサーバーと比較することです。それが変更された場合は、イメージを再ダウンロードしてください。 – Nico
@ニコはい、それは私の心の中で最初のことでしたが、私は、これは多くの画像がある場合、これは遅くなると思う。私はこれらの画像がテクスチャであると仮定します。 – Programmer