快速入门:设置和获取玩家数据

注意

在 PlayFab API 中,函数名称使用术语 UserData。 在 Game Manager 中,此概念描述为玩家数据。 它们完全相同,可互换使用。

开始使用 PlayFab 播放器数据。 本快速入门介绍如何使用 C# Unity 和 PlayFab CloudScript 设置和检索玩家数据。

玩家数据是应用于单个玩家或玩家组(共享数据),并由 PlayFab 存储为键/值对 (KVP) 的信息。 本文介绍了可以安全地从任何进程或上下文调用的客户端 API 调用。 它还涵盖只应 从所控制的专用服务器进程进行的服务器 API 调用,或是经过精心保护的 CloudScript 调用。 服务器 API 需要开发密钥,切勿将该密钥提供给客户端或随客户端发布。

本主题中的 C# 示例是针对 Unity SDK 编写的。 Unity SDK 使用事件驱动模型来处理非同步任务。 若要使用标准 C# 或 Xamarin C# SDK 运行示例代码,必须修改代码以使用异步任务模型。 必须修改的方法在签名中将异步附加到方法名称。 例如,Unity SDK 中的 SetObject 在标准 C# SDK 中变为 SetObjectAsync。 对此,请参阅 使用 async 和 await 进行异步编程

要求

  • 一个 PlayFab 开发者帐户
  • Unity 编辑器的已安装副本。 若要通过 Unity Hub 或 Unity+ 安装 Unity 以供个人使用,请参阅下载 Unity

    注意

    PlayFab Unity3D SDK 支持 Unity 编辑器版本 5.3(2015 年 12 月发布)及更高版本。

  • Unity 项目 - 可以是下列任一项:
    • 全新的项目。 有关详细信息,请参阅 首次启动 Unity
    • 引导式教程项目。 有关详细信息,请参阅 Unity 入门
    • 一个现有项目。
  • PlayFab Unity3D SDK。

有关设置 PlayFab Unity3D SDK 的信息,请参阅 快速入门:Unity 中的 PlayFab 客户端 C# 库 文章,该文章可确保拥有 PlayFab 帐户并已配置 Unity3D SDK。

关于代码示例

本主题中的 C# 示例是针对 Unity SDK 编写的。 Unity SDK 使用事件驱动模型来处理非同步任务。 若要使用标准 C# 或 Xamarin C# SDK 运行示例代码,必须修改代码以使用异步任务模型。 必须修改的方法在签名中将异步附加到方法名称。 例如,Unity SDK 中的 SetObject 在标准 C# SDK 中变为 SetObjectAsync。 对此,请参阅 使用 async 和 await 进行异步编程

虽然可以使用现有的 Unity 项目,但本快速入门中的过程假定使用的是在完成快速入门:Unity 中的 PlayFab 客户端 C# 库时创建的示例。

Game Manager 中的玩家数据

始终可以执行以下步骤来通过 Game Manager 获取和设置玩家数据。

  • 打开 Game Manager。 如果不熟悉它,请参阅 Game Manager 快速入门
  • 选择 “玩家” 选项卡。
  • 选择玩家的姓名。 这会使您进入 Players Account 选项卡。
  • 选择 Player Data 选项卡以查看其数据。

添加用于设置玩家数据和检索玩家数据的方法

  1. 在 Unity 编辑器中,打开示例项目。

  2. 在"项目"窗口中,打开资产>脚本,然后打开 PlayFabLogin 脚本。

  3. 在 Visual Studio 中,将以下内容添加到以下 using 语句:

    using System.Collections.Generic;

  4. 若要设置玩家数据,请将 SetUserData 方法添加到 PlayFabLogin 类。 SetUserData 使用 UpdateUserData 方法创建或更新已登录玩家的玩家数据。

    该方法创建(或更新,如果键值对 (KVPS) 已存在)KVP Ancestor 和值 ArthurSuccessor 和值 Fred

    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 方法检索指定玩家的玩家数据。

    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 方法中调用对 SetUserDataGetUserData 的添加调用:

    private void OnLoginSuccess(LoginResult result) {
        Debug.Log("Congratulations, you made your first successful API call!");
        SetUserData();
        GetUserData(result.PlayFabId);
    }
    
  7. 保存文件。

运行示例

在 Unity 编辑器中,选择播放按钮。 成功后,调用的结果将显示在控制台窗口中。

另请参阅