나는 내가 주변에서 어슬렁 거리고있는 간단한 탑 다운 사수 라 갈라가를 가지고있다. 그러나, 문서를 살펴본 후에는 이미지를 효율적으로로드하는 방법과 프레임마다 블립할지 여부에 대해 혼란스러워졌습니다. 모든 이미지는 파이 게임 스프라이트 클래스를 상속받은 몇 개의 클래스를 통해로드됩니다. 지금이 순간, 나는 같은 클래스 레벨의 속성으로 이미지를로드하고 있습니다 :이 메모리에 나는 새로운 레이저를 만들 때마다 (이미지의 새로운 인스턴스를로드에서 파이썬을 방지 바라고 있어요프레임 당 이미지로드 및 블리 팅?
class Laser(pygame.sprite.Sprite):
image = None
def __init__(self, start_x, start_y):
pygame.sprite.Sprite.__init__(self)
self.pos_x = start_x
self.pos_y = start_y
if Laser.image is None:
Laser.image = pygame.image.load('img/laser_single.png')
self.image = Laser.image
self.rect = self.image.get_rect()
self.rect.topleft = [self.pos_x, self.pos_y]
을). 그러나 나는 이것이 예상대로 일할 것인가?
두 번째 문제는 활성 스프라이트를 모두 파이 게임 표면에 블리 팅 할 때 발생합니다. 현재 나는 Laser(), Enemy(), andnot 객체 목록을 반복하고 pygame.display.update()를 호출하기 전에 각각 하나씩 blit합니다. 개별적으로 각 객체를 blit해야하는 것은 불필요한 것 같습니다. 그래서 이것이 pygame이 구현하는 가장 효율적인 메소드인지 여부를 묻습니다. 또는 모든 개체를 한 번에 blit하고 성능을 향상시키는 방법이 있습니까?
를 사용하여 그룹 사이의 간단한 충돌 감지를 할 수있게된다. 그러나 여러 프레임 동안 동일한 위치에 머무르는 스프라이트가 많은 경우에는 모든 프레임에서 스프라이트를 블리치하는 것을 피하기 위해 'BigYellowCactus'를 살펴 보는 것이 유용 할 것입니다. – pmoleri