如何修改 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());
});
}