> ## 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.

# 玩家資料快速入門

> PlayFab 玩家資料快速入門，逐步說明如何從用戶端和伺服器 SDK 建立、讀取和更新自訂玩家索引鍵值欄位。

# 快速入門：設定和取得玩家資料

<Note>
  在 PlayFab API 中，函式名稱使用 **UserData** 一詞。在 **Game Manager** 中，此概念描述為 **Player Data**。兩者完全相同且可互換。
</Note>

開始使用 PlayFab 玩家資料。本快速入門示範如何在 Unity 中使用 C# 以及使用 PlayFab CloudScript 設定和擷取玩家資料。

玩家資料是適用於個別玩家或玩家群組 (共用資料) 的資訊，並由 PlayFab 儲存為索引鍵/值組 (KVP)。本文涵蓋可從任何處理序或內容安全呼叫的用戶端 API 呼叫。它也涵蓋伺服器 API 呼叫，這些呼叫*只*應從您控制的專用伺服器處理序或經過謹慎保護的 CloudScript 呼叫進行。伺服器 API 需要您的開發人員秘密金鑰。不應將金鑰提供給用戶端，或與用戶端一起發佈。

## 需求

* [PlayFab 開發人員帳戶](https://developer.playfab.com)。
* 已安裝的 Unity Editor。若要透過 Unity Hub 安裝供個人使用的 Unity，或供專業使用的 Unity+，請參閱[下載 Unity](https://unity3d.com/get-unity/download)。

<Note>
  PlayFab Unity3D SDK 支援 Unity Editor 5.3 版 (2015 年 12 月發行) 及更新版本。
</Note>

* Unity 專案可以是：
  * 全新的專案。如需詳細資訊，請參閱[第一次啟動 Unity](https://docs.unity3d.com/550/Documentation/Manual/GettingStarted.html)。
  * 引導式教學課程專案。如需詳細資訊，請參閱[開始使用 Unity](https://learn.unity.com/)。
  * 現有的專案。
* PlayFab Unity3D SDK。

如需設定 PlayFab Unity3D SDK 的相關資訊，請參閱[快速入門：Unity 中的 C# PlayFab 用戶端程式庫](/zh-TW/services/playfab/sdks/unity3d/quickstart)一文。這篇文章可確保您擁有 PlayFab 帳戶，並已正確設定 Unity3D SDK。

## 關於程式碼範例

本文中的 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/)。

雖然您可以使用現有的 Unity 專案，但本快速入門假設您使用的是完成[快速入門：Unity 中的 C# PlayFab 用戶端程式庫](/zh-TW/services/playfab/sdks/unity3d/quickstart)時所建立的範例。

## Game Manager 中的玩家資料

您隨時可以執行下列步驟，透過 Game Manager 取得和設定玩家資料。

* 開啟 **Game Manager**。如果您不熟悉它，請參閱 [Game Manager 快速入門](/zh-TW/services/playfab/live-service-management/gamemanager/quickstart)。
* 選取 **Players** 索引標籤。
* 選取**玩家**的名稱以存取 **Players Account** 索引標籤。
* 選取 **Player Data** 索引標籤以查看其資料。

## 新增設定玩家資料和擷取玩家資料的方法

1. 在 Unity Editor 中，開啟您的範例專案。

2. 在 **Project** 視窗中，開啟 **Assets** > **Scripts**，然後開啟 PlayFabLogin 指令碼。

3. 在 Visual Studio 中，將下列內容新增至 using 陳述式：

   `using System.Collections.Generic;`

4. 若要設定玩家資料，請將 `SetUserData` 方法新增至 `PlayFabLogin` 類別。`SetUserData` 使用 [UpdateUserData](xref:titleid.playfabapi.com.client.playerdatamanagement.updateuserdata) 方法為已登入的玩家建立或更新玩家資料。

   此方法會建立 (如果索引鍵值組 (KVP) 已存在則更新) KVP `Ancestor` (值為 `Arthur`) 和 `Successor` (值為 `Fred`)。

   ```csharp theme={null}
   void SetUserData() {
       PlayFabClientAPI.UpdateUserData(new UpdateUserDataRequest() {
           Data = new Dictionary<string, string>() {
               {"Ancestor", "Arthur"},
               {"Successor", "Fred"}
           }
       },
       result => Debug.Log("Successfully updated user data"),
       error => {
           Debug.Log("Got error setting user data Ancestor to Arthur");
           Debug.Log(error.GenerateErrorReport());
       });
   }
   ```

5. 若要取得玩家資料，請將 `GetUserData` 方法新增至 `PlayFabLogin` 類別。`SetUserData` 使用 [GetUserData](xref:titleid.playfabapi.com.client.playerdatamanagement.getuserdata) 方法擷取指定玩家的玩家資料。

   ```csharp theme={null}
   void GetUserData(string myPlayFabId) {
       PlayFabClientAPI.GetUserData(new GetUserDataRequest() {
           PlayFabId = myPlayFabId,
           Keys = null
       }, result => {
           Debug.Log("Got user data:");
           if (result.Data == null || !result.Data.ContainsKey("Ancestor")) Debug.Log("No Ancestor");
           else Debug.Log("Ancestor: "+result.Data["Ancestor"].Value);
       }, (error) => {
           Debug.Log("Got error retrieving user data:");
           Debug.Log(error.GenerateErrorReport());
       });
   }
   ```

6. 在 `OnLoginSuccess` 方法中呼叫 `SetUserData` 和 `GetUserData`。

   ```csharp theme={null}
   private void OnLoginSuccess(LoginResult result) {
       Debug.Log("Congratulations, you made your first successful API call!");
       SetUserData();
       GetUserData(result.PlayFabId);
   }
   ```

7. 儲存檔案。

## 執行範例

在 Unity Editor 中，選取播放按鈕。成功時，呼叫的結果會顯示在主控台視窗中。

## 另請參閱

* [如何設定內部玩家資料](/zh-TW/services/playfab/player-progression/player-data/how-to-set-internal-player-data)
* [如何取得內部玩家資料](/zh-TW/services/playfab/player-progression/player-data/how-to-get-internal-player-data)
* [如何設定唯讀玩家資料](/zh-TW/services/playfab/player-progression/player-data/how-to-set-read-only-player-data)
* [如何取得唯讀玩家資料](/zh-TW/services/playfab/player-progression/player-data/how-to-get-read-only-player-data)
* [如何從 CloudScript 修改唯讀或內部玩家資料](/zh-TW/services/playfab/player-progression/player-data/how-to-modify-read-only-internal-player-data)
* [遊戲資料快速入門](/zh-TW/services/playfab/live-service-management/game-configuration/titledata/quickstart)
* [使用發行者資料](/zh-TW/services/playfab/live-service-management/game-configuration/titledata/using-publisher-data)
* [CloudScript 快速入門](/zh-TW/services/playfab/live-service-management/service-gateway/automation/cloudscript/quickstart)


## Related topics

- [遊戲資料快速入門](/zh-TW/services/playfab/live-service-management/game-configuration/titledata/quickstart.md)
- [PlayFab 玩家進度文件](/zh-TW/services/playfab/player-progression/index.md)
- [統計資料快速入門](/zh-TW/services/playfab/player-progression/statistics/quickstart-statistics.md)
- [快速入門 (Windows) - 呼叫 PlayFab 服務](/zh-TW/services/playfab/sdks/unified-sdk/quickstart-services.md)
- [Game Manager 快速入門](/zh-TW/services/playfab/live-service-management/gamemanager/quickstart.md)
