スタック・オーバーフロー Asked by Nax藤極 on August 16, 2020
UnityWebRequestを使用して中断したファイルダウンロードを再開させる方法
Unityで開発を行っております。
DownloadHandlerScriptクラスを継承したダウンロードハンドラを作成しました。
private class FileDownloadHandler : DownloadHandlerScript
{
FileStream fs;
int offset = 0;
int length = 0;
public FileDownloadHandler(string path, byte[] buffer)
: base(buffer)
{
fs = new FileStream(path, FileMode.Create, FileAccess.Write);
}
// データを受信すると呼び出される
protected override bool ReceiveData(byte[] data, int dataLength)
{
fs.Write(data, 0, dataLength);
offset += dataLength;
return true;
}
// ダウンロードが終わった時に呼び出される
protected override void CompleteContent()
{
fs.Flush();
fs.Close();
}
// ダウンロードするサイズ
protected override void ReceiveContentLength(int contentLength)
{
length = contentLength;
}
// downloadProgressの値
protected override float GetProgress()
{
if (length == 0)
return 0.0f;
return (float)offset / length;
}
}
こちらを改良してファイルダウンロードを何らかの原因で中断した場合、
ファイルダウンロードを再開できるようにしたいと考えております。
通信処理は以下のような形です。
{
UnityWebRequest www = new UnityWebRequest(a_url);
byte[] l_bytes = new byte[300 * 1024];
www.downloadHandler = new FileDownloadHandler( _path, l_bytes);
www.Send();
while (!www.isDone)
{
_loadingProgress = www.downloadProgress;
yield return null;
}
l_bytes = null;
}
途中まで読み込んでいたファイルの確保、通信再開地点の設定など、どうすればよいのでしょうか?よろしくお願いします。
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP