注意
在 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 选项卡以查看其数据。
添加用于设置玩家数据和检索玩家数据的方法
在 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 编辑器中,选择播放按钮。 成功后,调用的结果将显示在控制台窗口中。