データの保存

*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。

ゲームは常に、プレイヤーのレベル、エクスペリエンスポイント、インベントリアイテム、金/キャッシュなどのセッション間で 持続データ を保存する必要があります。

このチュートリアルでは、基本の データストア を作成する方法、サンプルデータを保存し、ゲームセッションにデータを読み込む方法を示しています。

Studio アクセスを有効化する

デフォルトでは、Studio でテストされたゲームはデータストアにアクセスできませんので、まずはこれらを有効にする必要があります。

  1. Make sure your game is published (File > Publish to Roblox) to enable Studio accesアクセス, 書き込み権限 (write access).

  2. ホームタブから ゲーム設定 ウィンドウを開きます。

  3. In the セキュリティ section, turn on API サービスへのスタジオアクセスを有効にする .

  4. クリックして 保存 をクリックして変更を登録します。

データストアの作成

データストアはユニークな 名前 で識別されます。この例では、 PlayerGold という名前のデータストアは、すべてのプレイヤーのゴールドを持続ストレージに保存します。

  1. 新しい ScriptServerScriptService という名前の下に作成します。

  2. データストアは DataStoreService によって管理されているので、最初の行にサービスを取得してください。


    local DataStoreService = game:GetService("DataStoreService")
  3. 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

パーティープレースにアクセスできます

はい

データストアにプレイヤーのデータを保存するには:

  1. データストアのキーに playerUserID という変数を作成します。次に、 playerGold を使用して、プレイヤーの開始金額を保存します。


    local DataStoreService = game:GetService("DataStoreService")
    local goldStore = DataStoreService:GetDataStore("PlayerGold")
    -- データストアのキーと値
    local playerUserID = 505306092
    local playerGold = 250
  2. データを PlayerGold データストアに保保管するには、保護された呼び出し内で SetAsync を呼び出し、以前に作成されたキーと値変数をパスします。


    local DataStoreService = game:GetService("DataStoreService")
    local goldStore = DataStoreService:GetDataStore("PlayerGold")
    -- データストアのキーと値
    local playerUserID = 505306092
    local playerGold = 250
    -- データストアのキーを設定
    local setSuccess, errorMessage = pcall(function()
    goldStore:SetAsync(playerUserID, playerGold)
    end)
    if not setSuccess then
    warn(errorMessage)
    end

機能のように SetAsync() はネットワークコールであり、時々失敗する可能性があります。上で示されているように、 pcall() は、これらの失敗を検出し、処理するために使用されます。

最も基本的な形式で、pcall() は機能を受け入れ、2つの値を返します:

  • ステータス ( boolean ) ;これは、エラーなく実行された関数の場合、またはそうでない場合に真です。
  • 機能の戻り値またはエラーメッセージ。

上のサンプルでは、ステータス ( setSuccess ) は 12 行目でテストされ、 SetAsync() が何らかの理由で失敗した場合、 errorMessage がアウトプットウィンドウに表示されます。

データを読み取る

  1. データストアからデータを読み保管むには、GetAsync() を呼び出し、必要なキー名で実行します。


    local setSuccess, errorMessage = pcall(function()
    goldStore:SetAsync(playerUserID, playerGold)
    end)
    if not setSuccess then
    warn(errorMessage)
    end
    -- データストアのキーを読み取る
    local getSuccess, currentGold = pcall(function()
    return goldStore:GetAsync(playerUserID)
    end)
    if getSuccess then
    print(currentGold)
    end
  2. スクリプトをテストするには、実行 をクリックし、currentGold の値が 出力 ウィンドウに印刷されていることに注意してください。注意してください、機能はデータストアサーバーに接続する必要があるため、数秒かかる場合があります。

サンプルプロジェクト

基本的なデータストア使用を理解したので、サンプルゲームでテストしてください。

ゴールドラッシュ できるだけ多くのゴールドチャンクを集めて、セッション間で持続する個人記録を設定します。

また、Studio でゲームを編集し、データ自動保存などを含む強化された GoldManager スクリプトを探索することもできます。

Edit in Studio option from the experience's main page