アットウィキロゴ

Display List

Display List(ディスプレイリスト)は、画面上に表示されるすべてのスプライトを管理するための「現在アクティブなスプライトの目録」のような仕組みです。
スプライトを単に作成しただけでは画面に現れず、このリストに登録することで初めてシステムが描画対象として認識します。


1. ディスプレイリストの基本操作

スプライトをこのリストに入れたり出したりすることで、表示・非表示を切り替えます。
sprite:add()
スプライトをディスプレイリストに追加します。これにより、次の描画サイクルから画面に表示されるようになります。
sprite:remove()
リストから削除し、画面上からも消去します。
playdate.graphics.sprite.removeAll()
現在リストに載っているすべてのスプライトを一括で削除します。
シーンの切り替え時などに重宝します。

2. 描画の心臓部:sprite.update()

ディスプレイリストの真価は、メインループ(playdate.update())内で呼び出す playdate.graphics.sprite.update() にあります。
この関数を1回呼ぶだけで、以下の処理が自動で行われます。
1. 自動描画
リストに載っている全スプライトを正しい順序で描画。
2. 汚れ領域(Dirty Rects)の最適化
変化があった部分(移動したスプライトの元の位置と新しい位置など)だけを再描画するため、手動で draw() を呼ぶよりも遥かに効率的です。
3. アニメーション更新
必要に応じてスプライトの状態を更新します。

3. 重なり順とレイヤー管理 (Z-Index)

ディスプレイリスト内では、各スプライトに Z-Index という優先順位を設定できます。
  • 数値が大きいほど手前に、小さいほど奥に描画されます
  • デフォルトのZ-Indexは0です。背景はマイナスの値、UIは大きなプラスの値にする、といった使い分けが一般的です

4. パフォーマンスと管理のコツ

オブジェクトポーリング
スプライトを頻繁に new(生成)して remove(破棄)するのはCPU負荷が高いため、一度作ったスプライトを add/remove で使い回すのがPlaydate開発の定石です。
表示判定
playdate.graphics.sprite.getAllSprites() を使うと、現在リストに入っている(=表示されている)全スプライトを配列として取得できます。
背景の描画
sprite.setBackgroundDrawingCallback() を設定すると、ディスプレイリストがクリアされた後、スプライトが描画される前のタイミングで背景を描画できます。


関連ページ

最終更新:2026年04月22日 11:49