3
일부 파일을 가져 와서 내 리소스 디렉토리에 저장하기 위해 Unity 용 Parse SDK를 사용하고 있습니다. parse.findAsync()를 호출하면 다른 작업이 만들어지고 파싱을 통해 얻은 URL을 WWW에서 다운로드 할 수 없게됩니다. 내가 수행해야합니다메인 스레드 외부에서 WWW 호출
- 전화 구문 분석
- 구문 분석 정보 입수를 내가 모든 것을 완료를 기다립니다 구문 분석
- 에서받은 모든 파일에 대한
- 전화 WWW;
- 반환 결과; "메인 스레드 외부에서 호출 할 수 없습니다"
public IEnumerator GetXXXAsync(String objectId){ var query = ParseObject.GetQuery("xxx").WhereEqualTo("yyy", ParseObject. CreateWithoutData("zzz", objectId)); List<String> urlList = new List<String>(); Album album = null; query.FindAsync().ContinueWith(t => { var tasks = new List<Task>(); Task task = Task.FromResult(0); foreach (var result in t.Result) { ParseObject obj = result; ParseFile file = (ParseFile)obj.Get<ParseFile>("image"); if(file != null){ urlList.Add(file.Url.ToString()); tasks.Add(GetImageAsync(file.Url.ToString(), "image.png")); } } // finished. return Task.WhenAll(tasks); }).Unwrap().ContinueWith(_ => { gameManager.SendOk(); }); return null; } private WWW WaitForImage(String url, string filename) { WWW www = new WWW(url); while(!www.isDone){ Debug.Log("Waiting"); } Utils.SaveFileFromTexture(www.texture, (gameManager.GetResourcesPath() + "/Textures/" + filename)); Debug.Log("Saving file "); return www; } public Task<WWW> GetImageAsync(String url, string filename) { var task = new TaskCompletionSource<WWW>(); Debug.Log("GetImageAsync " + filename); task.SetResult(WaitForImage(url, filename)); return task.Task; }
가 나는 WWW 대신있는 IEnumerator를 얻기 위해 시도하지만, 난 항상 WWW를 얻을 :
나는이 시도. 메인 스레드 밖에서 WWW를 호출하기 위해 할 수있는 일이 있습니까? 아니면 다른 것?
TKS을
주위 방법이 없습니다. 'coroutine'을 사용하여'WWW'를 "비동기 적으로"(Unity와 비동기로) 실행하거나 타사 다운로드 도구를 찾으십시오. – Jerdak
빠른 질문입니다. 컴파일 된 응용 프로그램 리소스 파일에 포함되지 않은 경우 다운로드 한 리소스를 어떻게 사용할 계획입니까? – Alex
@Alex www.LoadImageIntoTexture (texTmp)를 사용하여 런타임에 이미지를로드 할 수 있습니다. URL 또는 파일 경로에 사용될 수 있습니다. 또는 모델을 위해 런타임과 같은 수입업자를 만들 수 있습니다 http://wiki.unity3d.com/index.php?title=ObjImporter – Shredder2500