[2021] 🎓 졸업작품/[2021] 🎮 Unity
Unity C# Inumerator StartCoroutine 에러
락꿈사
2021. 12. 23. 15:52
참고
http://theeye.pe.kr/archives/tag/waituntil
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=happybaby56&logNo=221322535793
에러 내용 : Inumerate를 사용해서 서버에서 통신하여 이미지 data를 다 다운받을 동안 yield하게 했더니 data를 다 내려받지도 않았는데 배열에 접근하여 IndexOutOfRange 에러가 남
해결 방법 : IEnumerator안에서 StartCoroutine()으로 IEnumerator를 호출하면 호출된 IEnumerator가 끝날때까지 그 다음 코드를 실행하지 않는다는 점을 사용하여 IEnumerator를 중첩하여 호출
IEnumerator GetTexture()
{
for (int i = 0; i < 5; i++)
{
int imageIndex = i+1;
int fileIndex = i;
string number = imageIndex.ToString("D3");
UnityWebRequest www = UnityWebRequestTexture.GetTexture(String.Format("{0}image_{1}.png", domain, number));
Debug.Log(String.Format("{0}image_{1}.png", domain, number));
yield return www.SendWebRequest();
if (www.error == null)
{
Texture downloadImage = DownloadHandlerTexture.GetContent(www);
files[fileIndex] = downloadImage;
Debug.Log(imageIndex + "번째 이미지 서비스 완료");
}
else
{
Debug.Log("이미지를 다운로드 받을 수 없습니다. 에러내용 : " + www.error);
yield break;
}
}
}
IEnumerator waitUntilDownloadImages()
{
yield return StartCoroutine(GetTexture());
_LoadImages();
}
StartCoroutine(waitUntilDownloadImages());
나를 매우 화나게 했던 에러. 거의 울기 직전에 해결함^v^...