快速入门:设置和获取玩家数据
注意
在 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 选项卡以查看其数据。
添加用于设置玩家数据和检索玩家数据的方法
在 Unity 编辑器中,打开示例项目。
在"项目"窗口中,打开资产>脚本,然后打开 PlayFabLogin 脚本。
在 Visual Studio 中,将以下内容添加到以下 using 语句:
using System.Collections.Generic;
若要设置玩家数据,请将
SetUserData
方法添加到PlayFabLogin
类。SetUserData
使用 UpdateUserData 方法创建或更新已登录玩家的玩家数据。该方法创建(或更新,如果键值对 (KVPS) 已存在)KVP
Ancestor
和值Arthur
,Successor
和值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()); }); }
若要获取玩家数据,请将
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()); }); }
在
OnLoginSuccess
方法中调用对SetUserData
和GetUserData
的添加调用:private void OnLoginSuccess(LoginResult result) { Debug.Log("Congratulations, you made your first successful API call!"); SetUserData(); GetUserData(result.PlayFabId); }
保存文件。
运行示例
在 Unity 编辑器中,选择播放按钮。 成功后,调用的结果将显示在控制台窗口中。