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());
});
}