pyxen.world.destroy()
기존 Entity를 제거하고 월드에서 삭제합니다.
엔티티와 모든 컴포넌트를 영구적으로 삭제합니다.
구문
pyxen.world.destroy(entity)
매개변수
| 매개변수 | 타입 | 설명 |
|---|---|---|
entity | Entity | 제거할 엔티티. |
반환값
None
엔티티를 제거하면 일어나는 일
destroy()를 호출하면:
- 월드에서 엔티티 제거
- 첨부된 모든 컴포넌트 제거 (Sprite, Sound, Music, GridMap, GridBody 등)
- 부모/자식 관계 제거
- 내부 ID를 재사용을 위해 해제 (세대 안전)
제거 후에는 엔티티를 더 이상 사용하지 마세요.
예시
엔티티 제거
enemy = pyxen.world.spawn(sprite=assets.enemy, x=40, y=12)
# 나중에...
pyxen.world.destroy(enemy)
게임플레이 로직에서 제거
if player.health <= 0:
pyxen.world.destroy(player)
일반적인 패턴: 시간 기반 제거
explosion = pyxen.world.spawn(sprite=assets.explosion, x=32, y=16)
if explosion_timer.finished():
pyxen.world.destroy(explosion)
중요 참고
제거된 엔티티를 재사용하지 마세요
제거된 후:
pyxen.world.destroy(enemy)
enemy.x = 10 # 잘못된 사용
엔티티는 더 이상 월드에서 유효하지 않습니다.
새로운 것이 필요하면 — spawn()을 다시 호출하세요.
부모 / 자식 동작
제거된 엔티티가:
- 자식이 있으면 → 자동으로 제거됨
- 부모가 있으면 → 계층에서 제거됨
제거는 재귀적이며 안전합니다.
타입 안전
Entity가 아닌 객체가 전달되면:
pyxen.world.destroy("not an entity")
런타임 에러가 발생합니다.
항상 유효한 Entity를 전달하세요.
설계 철학
Pyxen에서:
- 엔티티는 경량 핸들
- 컴포넌트가 동작을 정의
- 제거하면 전체 조합이 제거됨
이를 통해 메모리가 예측 가능하고 ECS 친화적입니다.