2017-03-21 1 views
0

Libgdx를 배우고 동일한 인스턴스 또는 변수를 사용하여 스프라이트 개체를 출력하는 방법을 배우기 위해 자습서를 진행합니다. 따라서 동일한 이미지 나 스프라이트를 만들고 렌더링하려는 경우 동일한 변수를 사용할 수 있음을 이해할 수 있습니다. 하지만 이제는 여러 객체 (다른 플레이어/이미지)를 표시해야합니다. 여전히 같은 변수를 사용하여 출력 할 수 있습니까? 아니면 각각의 변수를 만들어야합니까? 왜냐하면 내가 공간과 메모리를 절약한다는 것을 보았 기 때문이다. 스프라이트 출력을 위해 SpriteBatch, Texture, Sprite 및 TextureRegion (이동 스프라이트 용) 객체를 사용하고 있습니다.LibGdx 여러 개체에 대한 하나 또는 여러 인스턴스

답변

1

아니요 다른 엔터티 (플레이어 등)에 대해 동일한 스프라이트 개체를 사용할 수 없습니다. 메모리를 저장할 위치가 아닙니다. Sprite 객체의 생성은 무거운 가중치 연산이 아닙니다.

메모리를 저장할 수있는 곳은 텍스처입니다. 가능하면 텍스처를 재사용해야합니다. 새로운 Sprite를 만들 때마다 새로운 텍스처를로드하고 싶지는 않습니다. 플레이어를 나타내는 이미지가 1 개 있다고 가정 해 봅시다. 이미지를 반복해서 만들면 안됩니다. AssetLoader를 사용하여 메모리에 한 번로드 한 다음 다시 사용해야합니다.

작은 크기의 텍스처가 여러 개인 경우 libgdx의 텍스처 포장기를 사용하여 여러 개의 작은 질감을로드하는 것이 좋지 않으므로 큰 텍스처 시트를로드하는 것이 좋기 때문에 libgdx의 질감 포장기를 사용해야합니다. 고가의 조작. 자세한 내용은 Texture Atlas을 읽어보십시오.

또한 일단 질감이 필요하지 않으면 그 질감을 처리해야합니다.

많은 Libgdx 클래스에서 구현되는 Disposable 인터페이스에 대한 자세한 내용은 Memory Management in Libgdx을 참조하십시오.

나는 또한 게임을 조기에 최적화하려고 노력하고 있습니다. 초기 단계에서 객체 생성을 전혀 염려하지 마십시오. 그리고 한 가지 더 기억하십시오 - 조숙 한 최적화는 모든 악의 뿌리입니다.