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に適したものになります。