저는 타일 기반의 2D 게임을 Java로 작성하고 있습니다. 캐릭터는 게임 로직에 따라 타일에 배치해야합니다. 각 문자는 java.awt.Graphics2D
을 사용하여 화면에 그려지는 그림과 연관됩니다. 그러나지도에 각 문자의 인스턴스가 두 개 이상있을 수 있습니다.클래스로 자바로드 이미지 - 가장 효율적인 방법은 무엇입니까?
문자 이미지를 저장하고 액세스하는 데 권장되는 방법은 무엇입니까? 유형 java.awt.image.BufferedImage
의 개인 변수를 할당 된 각 문자를 갖는
- :
는 세 가지 내가 생각할 수있는 구현이 있습니다. 객체를 그릴 때마다 이미지에 게터를 사용하여 액세스합니다. 그러나 이로 인해 개체의 크기가 너무 커질 수 있습니까?
- 정적 변수에 모든 이미지를 저장하는 또 다른 유틸리티 클래스가 있어야합니다. 캐릭터를 그릴 필요가있을 때마다 유틸리티 클래스의 정적 getter 메서드에 ID/이름을 전달하여 이미지를 호출 할 수 있습니다. 이것이 더 효율적일까요 아니면 이전 방법보다 느린가?
- 문자를 그릴 때마다 그림을로드하기 만하면됩니다. 문자를 그릴 필요가있을 때마다
ImageIO.read(new File(character.getImagePath())
이 발생합니다. 이게 가장 빠를 수 있니?
옵션 3을 사용하면 안됩니다. 일반적으로 페인트 방법은 * 초당 여러 번 호출됩니다. * 운영 체제의 캐시가 유효하더라도 게임을 크롤링하는 속도가 느린 경우가 종종 있습니다. – VGR
개별 이미지 대신 스프라이트 시트를 사용하십시오. – eldo