> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 透過 CloudScript 修改唯讀或內部玩家資料

> 使用 server.UpdateUserInternalData 搭配 C# 和 JavaScript 範例程式碼，從 CloudScript 安全地更新唯讀和內部 PlayFab 玩家資料。

如果您的遊戲需要，可以從 CloudScript 存取玩家資料。

如需使用 CloudScript 的詳細資訊，請參閱 [CloudScript 快速入門](/zh-TW/services/playfab/live-service-management/service-gateway/automation/cloudscript/quickstart)。

本文中的 C# 範例是針對 Unity SDK 撰寫的。Unity SDK 使用事件驅動模型來處理非同步工作。若要使用 C# SDK 執行範例程式碼，您必須修改程式碼以使用非同步 Task 模型。必須修改的方法會在簽章中的方法名稱後附加 Async。例如，Unity SDK 中的 SetObject 在 C# SDK 中會變成 SetObjectAsync。如需詳細資訊，請參閱[使用 async 和 await 進行非同步程式設計](https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/async/)。

## CloudScript 程式碼範例

您必須小心確保 CloudScript 中伺服器 API 呼叫的安全性。下列程式碼示範如何從 CloudScript 安全地修改一段唯讀玩家資料。

```javascript theme={null}
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 快速入門中所述，您可以從用戶端呼叫下列邏輯。

```csharp theme={null}
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());
    });
}
```


## Related topics

- [玩家資料快速入門](/zh-TW/services/playfab/player-progression/player-data/quickstart.md)
- [如何設定內部玩家資料](/zh-TW/services/playfab/player-progression/player-data/how-to-set-internal-player-data.md)
- [如何取得內部玩家資料](/zh-TW/services/playfab/player-progression/player-data/how-to-get-internal-player-data.md)
- [玩家資料](/zh-TW/services/playfab/player-progression/player-data/index.md)
- [如何設定唯讀玩家資料](/zh-TW/services/playfab/player-progression/player-data/how-to-set-read-only-player-data.md)
