pyxen.world.destroy()

既存のEntityを破棄し、ワールドから削除します。

エンティティとそのすべてのコンポーネントを永久に削除します。


構文

pyxen.world.destroy(entity)

パラメータ

パラメータ説明
entityEntity破棄するエンティティ。

戻り値

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