次の方法で共有


CloudScript から読み取り専用または内部のプレイヤー データを変更する方法

タイトルのために必要であれば、CloudScript からアクセスできます。

CloudScript の使用方法の詳細については、「CloudScript クイックスタート」を参照してください。

このトピックでご紹介する C# サンプルは、Unity SDK 用に記述されています。 Unity SDK では、イベント駆動モデルを使用して非同期のタスクを処理します。 標準の C# または Xamarin C# SDK でサンプル コードを実行するには、非同期タスク モデルを使用するようにコードを変更する必要があります。 修正が必要なメソッドは、署名のメソッド名に非同期が付加されています。 たとえば、Unity SDK の SetObject は、標準 C# SDK では SetObjectAsync になります。 詳細については、「ガイド - async と await を使った非同期プログラミング」を参照してください。

CloudScript コードの例

CloudScript でサーバー API 呼び出しのセキュリティには、十分に注意する必要があります。 次のコードでは、CloudScript から安全な読み取り専用のプレイヤー データの変更について説明します。

function IncrementReadOnlyUserData(args) {
  var playerData = server.GetUserInternalData({
        PlayFabId: currentPlayerId,
        Keys: ["ReadOnlyTest"]
  });

  var prevCount = "0";
  var nextCount = "1";
  try {
    prevCount = playerData.Data["ReadOnlyTest"].Value;
    var prevInt = parseInt(prevCount, 10);
    if (prevInt != prevInt) {
      prevInt = 0;
      nextCount = (prevInt + 1).toString();
    }
  } catch (e) {
    prevCount = "0";
    nextCount = "0";
  }

  var updateUserDataResult = server.UpdateUserInternalData({
    PlayFabId: currentPlayerId,
    Data:
        {
          "ReadOnlyTest": nextCount
        }
  });
}

C# コードの例

CloudScript クイックスタートで説明したように、クライアントから次の論理で呼び出しができます。

public void CloudIncrement() {
    PlayFabClientAPI.ExecuteCloudScript( new ExecuteCloudScriptRequest {
        FunctionName = "IncrementReadOnlyUserData"
    },
    result => Debug.Log("CloudScript call successful"),
    error => {
        Debug.Log("CloudScript call failed");
        Debug.Log(error.GenerateErrorReport());
    });
}