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

注意

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

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

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

要求

  • 一个 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文章中的适用于 C# 的 PlayFab 客户端库。 本文确保拥有 PlayFab 帐户,并且正确配置了 Unity3D SDK。

关于代码示例

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

尽管可以使用现有的 Unity 项目,但本快速入门假定你使用的是在完成快速入门时创建的示例:Unity 中的适用于 C# 的 PlayFab 客户端库

Game Manager 中的玩家数据

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

  • 打开 Game Manager。 如果不熟悉它,请参阅 Game Manager 快速入门
  • 选择 “玩家” 选项卡。
  • 选择要访问 “玩家 帐户”选项卡 的玩家 名称。
  • 选择 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 编辑器中,选择播放按钮。 成功后,调用的结果将显示在控制台窗口中。

另请参阅