[펌/수정] Get size of an online assetbundle and progress in Kb ?
Unity3D/Tips / 2018. 4. 18. 16:06
[TroubleShooting]
[에러메시지]
NotSupportedException: .... System.Net.WebRequest.GetCreator (System.String prefix) System.Net.WebRequest.Create (System.Uri requestUri)
PC/iOS에서는 잘 되는데 Android에서 위와 같은 NotSupportedException이 난다.(현재 Unity v5.6.5f1)
검색해보니 게임코디에 아래와 같은 답변을 해주신 분이 있다.
| NotSupportedException: .... System.Net.WebRequest.GetCreator (System.String prefix) System.Net.WebRequest.Create (System.Uri requestUri) 모바일에서 위의 에러로 인해 HttpWebReaquest 를 사용하지 못하는 경우라면 여기 링크의 내용 참고하시기 바랍니다. http://www.vovchik.org/blog/13001 간단하게 우회하는 방법이 나와 있습니다. |
그래서 링크(http://www.vovchik.org/blog/13001)에서 말해준 대로 Wrapping을 해서 Android에서 돌려보니 잘된다!!
(kimsama님 감사합니다!)
내가 추가 및 수정한 소스는 아래와 같다.
// Wrapper Class using System; using System.Net; public class HttpRequestCreator : IWebRequestCreate { public WebRequest Create(Uri uri) { return new HttpWebRequest(uri); } }
//Get size of the asset HttpRequestCreator cHttpRequestCreator = new HttpRequestCreator(); // modify System.Net.WebRequest req = cHttpRequestCreator.Create(new Uri(assetURL)); // modify req.Method = "HEAD"; float ContentLength; using (System.Net.WebResponse resp = req.GetResponse()) { float.TryParse(resp.ContentLength.ToString(), out ContentLength); } while (!download.isDone) { if (progressBar != null) { progressBar.LabelInformations = "Downloading Assets"; progressBar.Progress = download.progress; progressBar.AssetSize = ContentLength / 1000000; //(Mb) } yield return null; }
- CDN에 있는 파일 사이즈를 어떻게 알 수 없나 하고 찾다가 테스트 해보고 잘 되길래 올려 놓음.
(PC/iOS는 잘되는데 Android가 에러나서 위와 같이 고침)
//Get size of the asset
System.Net.WebRequest req = System.Net.HttpWebRequest.Create(assetURL);
req.Method = "HEAD";
float ContentLength;
using (System.Net.WebResponse resp = req.GetResponse())
{
float.TryParse(resp.ContentLength.ToString(), out ContentLength);
}
while (!download.isDone)
{
if (progressBar != null)
{
progressBar.LabelInformations = "Downloading Assets";
progressBar.Progress = download.progress;
progressBar.AssetSize = ContentLength / 1000000; //(Mb)
}
yield return null;
}
[출처] https://answers.unity.com/questions/1035361/get-size-of-an-online-assetbundle-and-progress-in.html
반응형
'Unity3D > Tips' 카테고리의 다른 글
[링크] Google Analytics를 사용 중인 앱에 Firebase Analytics를 어떻게 추가하나요? (0) | 2018.05.30 |
---|---|
Unity app stops background music(앱 실행 시, 타 앱 사운드 끄기) (0) | 2018.04.19 |
[펌] How to detect iPhone X or iPad using iOS.DeviceGeneration? (0) | 2018.03.09 |
[링크] Unity3D 자동 GetComponent (0) | 2018.02.26 |
[펌] 지역 코드 얻어오기 (0) | 2018.02.22 |