ゲームは常に、プレイヤーのレベル、エクスペリエンスポイント、インベントリアイテム、金/キャッシュなどのセッション間で 持続データ を保存する必要があります。
このチュートリアルでは、基本の データストア を作成する方法、サンプルデータを保存し、ゲームセッションにデータを読み込む方法を示しています。
Studio アクセスを有効化する
デフォルトでは、Studio でテストされたゲームはデータストアにアクセスできませんので、まずはこれらを有効にする必要があります。
Make sure your game is published (File > Publish to Roblox) to enable Studio accesアクセス, 書き込み権限 (write access).
ホームタブから ゲーム設定 ウィンドウを開きます。
In the セキュリティ section, turn on API サービスへのスタジオアクセスを有効にする .
クリックして 保存 をクリックして変更を登録します。
データストアの作成
データストアはユニークな 名前 で識別されます。この例では、 PlayerGold という名前のデータストアは、すべてのプレイヤーのゴールドを持続ストレージに保存します。
新しい Script を ServerScriptService という名前の下に作成します。
データストアは DataStoreService によって管理されているので、最初の行にサービスを取得してください。
local DataStoreService = game:GetService("DataStoreService")Class.DataStoreService:GetDataStore() を "PlayerGold" で呼び出します。これには、 PlayerGold データストアが既存している場合、または作成することができます。
local DataStoreService = game:GetService("DataStoreService")local goldStore = DataStoreService:GetDataStore("PlayerGold")
データの保存
データストアは、Lua テーブルのような辞書です。データストアの各値は、ユニークな キー でインデックスされます。たとえば、プレイヤーのユニークな UserId またはゲームプロモーションのための名前付きの文字列などです。
プレイヤーデータの例
キー | 値 |
---|---|
31250608 | 50 |
351675979 | 20 |
505306092 | 78000 |
プロモーションの例
キー | 値 |
---|---|
アクティブな特別イベント | サマーパーティー2 |
アクティブなプロモーションコード | ボーナス123 |
パーティープレースにアクセスできます | はい |
データストアにプレイヤーのデータを保存するには:
データストアのキーに playerUserID という変数を作成します。次に、 playerGold を使用して、プレイヤーの開始金額を保存します。
local DataStoreService = game:GetService("DataStoreService")local goldStore = DataStoreService:GetDataStore("PlayerGold")-- データストアのキーと値local playerUserID = 505306092local playerGold = 250データを PlayerGold データストアに保保管するには、保護された呼び出し内で SetAsync を呼び出し、以前に作成されたキーと値変数をパスします。
local DataStoreService = game:GetService("DataStoreService")local goldStore = DataStoreService:GetDataStore("PlayerGold")-- データストアのキーと値local playerUserID = 505306092local playerGold = 250-- データストアのキーを設定local setSuccess, errorMessage = pcall(function()goldStore:SetAsync(playerUserID, playerGold)end)if not setSuccess thenwarn(errorMessage)end
機能のように SetAsync() はネットワークコールであり、時々失敗する可能性があります。上で示されているように、 pcall() は、これらの失敗を検出し、処理するために使用されます。
最も基本的な形式で、pcall() は機能を受け入れ、2つの値を返します:
- ステータス ( boolean ) ;これは、エラーなく実行された関数の場合、またはそうでない場合に真です。
- 機能の戻り値またはエラーメッセージ。
上のサンプルでは、ステータス ( setSuccess ) は 12 行目でテストされ、 SetAsync() が何らかの理由で失敗した場合、 errorMessage がアウトプットウィンドウに表示されます。
データを読み取る
データストアからデータを読み保管むには、GetAsync() を呼び出し、必要なキー名で実行します。
local setSuccess, errorMessage = pcall(function()goldStore:SetAsync(playerUserID, playerGold)end)if not setSuccess thenwarn(errorMessage)end-- データストアのキーを読み取るlocal getSuccess, currentGold = pcall(function()return goldStore:GetAsync(playerUserID)end)if getSuccess thenprint(currentGold)endスクリプトをテストするには、実行 をクリックし、currentGold の値が 出力 ウィンドウに印刷されていることに注意してください。注意してください、機能はデータストアサーバーに接続する必要があるため、数秒かかる場合があります。
サンプルプロジェクト
基本的なデータストア使用を理解したので、サンプルゲームでテストしてください。
ゴールドラッシュ できるだけ多くのゴールドチャンクを集めて、セッション間で持続する個人記録を設定します。
また、Studio でゲームを編集し、データ自動保存などを含む強化された GoldManager スクリプトを探索することもできます。