アットウィキロゴ

セーブとロードを実装する方法



セーブとロードを実装する方法

基本的なセーブ・ロードのサンプル
セーブデータを保存するにはデータストアという仕組みを使うと便利です。
データストアを利用するには、API/playdate.datastoreモジュールを使用します。
以下はAボタンでセーブ、Bボタンでロードするサンプルです。
import "CoreLibs/graphics"
 
local pd <const> = playdate
local gfx <const> = pd.graphics
local ds <const> = pd.datastore -- データストア.
 
--スコア
--@type integer
local score = math.random(0, 100)
 
function pd.update()
    gfx.clear()
 
    if pd.buttonJustPressed(pd.kButtonA) then
        -- Aボタンでセーブ.
        local saveData = {
            hiscore = score,
        }
        ds.write(saveData, "score")
        print("Score saved! score:" .. score)
    elseif pd.buttonJustPressed(pd.kButtonB) then
        -- Bボタンでロード.
        local loadedScore = ds.read("score")
        -- 読み込みに成功したらデータを取得.
        if loadedScore then
            score = loadedScore.hiscore
            print("Score loaded! score:" .. score)
        end
    end
 
    gfx.drawText("Score: " .. score, 50, 30)
    gfx.drawText("Press A to SAVE", 50, 50)
    gfx.drawText("Press B to LOAD", 50, 70)
end
 
注意点として、playdate.datastore.load()は、セーブデータが存在しない場合、"nil" を返します。
そのため戻り値が有効かどうかをチェックしてアクセスする必要があります。
セーブデータの保存先 (Playdate Simulatorの場合)
セーブデータの保存先ですが、Playdate Simulatorの場合は、"File > Reveal Data Folder..." ([CTRL+B]) でデータフォルダを開きます。

"Data" フォルダ以下に、pdxinfoで設定した名前のフォルダの下に "score.json" というファイルが作成されています。

データストアJSON 形式で保存するので、テキストエディタで開くと、
{
	"hiscore":42
 
}
このようなフォーマットで保存されていることが確認できます。

関連ページ

最終更新:2026年04月26日 22:07