2014-04-23 4 views
0

유니티에서 한 번에 하나씩 표시해야하는 약 200 개의 이미지가 있습니다. 이것들은 신청서에 보관해야하며 웹에서 다운로드 할 수 없습니다.유니티에 이미지 스트리밍

지금은 모든 이미지와 상점을 가지고있는 목록이 있습니다. 그런 다음 버튼을 누르면 각 이미지를 한 번에 하나씩 보여주는 목록을 반복합니다. 내 코드는 다음과 같습니다.

public static List <Texture2D> images = new List<Texture2D>(); 

void Start() 
{ 

    System.Object[] textures = Resources.LoadAll(""); 
    foreach(object o in textures) 
    { 
     images.Add(o as Texture2D); 
    } 

} 

public static void MoveForward() 
{ 
    if(_frameCount < images.Count-1) 
    { 
     _frameCount++; 
    } 
    else 
    { 
     _frameCount = 0; 
    } 
} 

그러나 저장해야하는 이미지의 양 때문에 내 iPads 메모리를 먹고 있습니다. 런타임에 각 이미지를로드 할 필요가없는 위치에서 애플리케이션을 가속화 할 수있는 더 좋은 방법이 있는지 궁금합니다.

두 가지 방법으로이 문제를 해결할 수 있습니다

답변

4

:

1) 당신이, 당신이 spritesheet를로드 한 후, 하나 (또는 ​​그 이상) spritesheets의 모든 자산을 넣어 특정 스프라이트를 표시 할 수 있습니다 별도의 책임없이 로딩 시간을 필요로하는 경우 너는 필요해. 이 시트를 압축하여 메모리 사용을 최적화 할 수 있습니다.

2) 약간의 로딩 시간 (또는 이미지가 크지 않은 경우 눈에 띄는 지연이 없음)을 유지할 수 있으면 버튼을 클릭 할 때 필요한 이미지를로드하거나 다음 이미지가 미리로드 된 상태로 유지할 수 있습니다. 이미지는 한 번에로드됩니다. 그 후, 당신이 계속 나아갈 때 어떤 이미지가 필요하지 않다면 Resources.Unload을 사용하여 언로드 할 수 있습니다.

+1

이미지 크기와 사용자가 이미지를 얼마나 빨리 반복 할 것인가 (즉, 클릭 당 시간)에 따라 버퍼가 가득 차 있지 않을 때 새로운 이미지를로드하는 비동기 작업이있는 이미지로드 버퍼가 가장 좋습니다. 이 상황에서 사용할 메모리 양에 따라 버퍼 크기가 달라집니다. –

관련 문제