作成したコイン拾いゲームにセーブ機能を追加する
もととなるゲーム
APIの利用を許可する
HomeタブのGameSettingsを選択、SecurityタブのEnable Studio Access to API Servicesを有効にしてSaveを選択する

プレイヤーが追加されたときにデータをロードする
CoinAmountLeaderBoardスクリプトを開き、リーダーボード初期化前にデータをロードする
local Players = game:GetService("Players")
-- DataStoreを利用するためのサービスクラスを取得
local DataStoreService = game:GetService("DataStoreService")
-- Dummyという名前のDataStoreを取得/生成する
local coinStore = DataStoreService:GetDataStore("Coin")
local function leaderboardSetup(player)
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = player
-- userIdからData用のキーを生成する
local datakey = player.userId.."-coin"
-- 成功するまでデータのロードを試みる
local coinValue
repeat
print("try load data")
local success, errorMessage = pcall(function()
coinValue = coinStore:GetAsync(datakey)
end)
wait(1)
until(success)
-- ロードしたデータを反映させる
local stage = Instance.new("IntValue")
stage.Name = "Coin"
stage.Value = coinValue
stage.Parent = leaderstats
end
-- プレイヤーが追加されたときにリーダーボードを初期化する
Players.PlayerAdded:Connect(leaderboardSetup)
プレイヤーがゲームから出るときにデータを保存する
プレイヤーがゲームから出るときにデータを保存する関数を呼び出す
local function savePlayerData(player) -- userIdからData用のキーを生成する local datakey = player.userId.."-coin" -- データを保存する local data = tonumber(player.leaderstats.Coin.Value) repeat local success, errormessage = pcall(function() coinStore:SetAsync(datakey, data) end) until (success) end -- プレイヤーがゲームから出ようとしたときのイベントを登録する Players.PlayerRemoving:Connect(savePlayerData)
出力
ゲームを開始してコインを集めゲームを終了したあと、再度ゲームを再開するとデータが保存されていることを確認できる

コード全文
local Players = game:GetService("Players")
local DataStoreService = game:GetService("DataStoreService")
local coinStore = DataStoreService:GetDataStore("Coin")
local function leaderboardSetup(player)
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = player
local datakey = player.userId.."-coin"
local coinValue
repeat
print("try load data")
local success, errorMessage = pcall(function()
coinValue = coinStore:GetAsync(datakey)
end)
wait(1)
until(success)
local stage = Instance.new("IntValue")
stage.Name = "Coin"
stage.Value = coinValue
stage.Parent = leaderstats
end
local function savePlayerData(player)
local datakey = player.userId.."-coin"
local data = tonumber(player.leaderstats.Coin.Value)
repeat
local success, errormessage = pcall(function()
coinStore:SetAsync(datakey, data)
end)
until (success)
end
Players.PlayerAdded:Connect(leaderboardSetup)
Players.PlayerRemoving:Connect(savePlayerData)
関連