2014-11-16 4 views
1

정적 클래스에서 내 게임에 텍스처를 저장하고 있습니다. 이것들은 매니저로부터이 클래스의 정적 배열에로드됩니다.libGDX 정적 클래스에서 텍스처 처리

각 화면에는 dispose 메서드가 있지만 어디에서 텍스처를 처리해야합니까? libGDX는 애플리케이션 종료시에만 처리하므로 모든 화면에 텍스처를 처리해야합니까?

답변

3

모든 텍스처를 정적 클래스에 정적 배열로 유지하는 것은 좋지 않은 생각입니다. 게임을 최소화 할 때 또는 다른 유사한 경우에 GC로 제거 할 텍스처를 제어하는 ​​것은 매우 어렵습니다.

자원로드 및 처분에는 을 사용하는 것이 좋습니다. 여기에서 AssetManager와 리소스 관리에 대한 유용한 정보를 찾을 수 있습니다. Managing your assets

두 번째 질문 : 스크린을 변경할 때 모든 텍스처를 처리 /로드하지 않는 것이 좋습니다. 나는 다음 방법 사용 : 게임 시작 쇼 로딩 화면에서

  1. 를 모든 자주 사용할 텍스처를로드 AssetManager와 (버튼, 메인 메뉴의 그래픽, 메인 캐릭터, 대화 상자 등 같은). 게임이 작 으면 여기에 모든 게임 텍스처를로드 할 수 있습니다.
  2. 게임을 종료 할 때까지이 텍스처를 처리하지 마십시오.
  3. 화면을 변경할 때 동적 텍스쳐 만로드하거나 처분합니다 (예 : 레벨마다 배경이 다른 경우이 배경을로드/처분 할 수 있음).
  4. 그래픽에 항상 Texture packer을 사용하십시오.
  5. .png 그래픽을 압축하려면 tinypng을 사용하십시오.

피. 모든 텍스처 또는 다른 애셋을 한 클래스에 보관하려는 경우. Map<String,Texture>을 보유 할 Singltone 클래스를 작성하십시오. 여기서 String은 텍스처 또는 전체 경로의 이름입니다.

관련 문제