游戏数据快速入门
游戏数据是一组纯文本键值对,用于在服务器上远程存储和管理游戏的配置数据。 它使游戏宽度配置变量易于访问和整理,可在客户端上检索。
本快速入门介绍如何以编程方式创建和使用游戏数据。
这是一个重要的主题,因为将游戏的配置数据远程存储在服务器上(可以随时更改)是使用 PlayFab 等服务的最基本原因之一。
获取游戏数据
从游戏客户端
使用 PlayFabClientAPI
中的 GetTitleData 获取特定游戏的 KVP。 下面的代码示例显示所有游戏数据的值。
public void ClientGetTitleData() {
PlayFabClientAPI.GetTitleData(new GetTitleDataRequest(),
result => {
if(result.Data == null || !result.Data.ContainsKey("MonsterName")) Debug.Log("No MonsterName");
else Debug.Log("MonsterName: "+result.Data["MonsterName"]);
},
error => {
Debug.Log("Got error getting titleData:");
Debug.Log(error.GenerateErrorReport());
}
);
}
从游戏服务器
使用 PlayFabServerAPI
中的 GetTitleData 获取特定游戏的 KVP。 下面的代码示例显示所有游戏数据的值。
public void ServerGetTitleData() {
PlayFabServerAPI.GetTitleData( new GetTitleDataRequest(),
result => {
if (result.Data == null || !result.Data.ContainsKey("MonsterName")) Debug.Log("No MonsterName");
else Debug.Log("MonsterName: " + result.Data["MonsterName"]);
},
error => {
Debug.Log("Got error getting titleData:");
Debug.Log(error.GenerateErrorReport());
});
}
设置游戏数据
游戏数据不太可能经常变化。 在大多数情况下,应将游戏数据用于在游戏的生命周期内基本保持不变的静态数据。
可以使用 Game Manager 或服务器 API 函数设置游戏数据。
使用 Game Manager 设置游戏数据
如果要使用游戏管理器将主游戏数据添加到游戏,请执行以下步骤。
- 在 Game Manager 中打开游戏。
- 选择 Content,然后选择 Title Data。
- 选择 New Title Data
- 在新游戏数据页面,为 Key 和 Value 输入值。 Key 和 Value 都以字符串形式存储。
- 使用 Save 按钮保存新数据项。
通过在 C# 中调用服务器 API 来设置游戏数据
SetTitleData API 是必须从专用服务器调用的服务器 API。 每次调用 SetTitleData
时,只能设置一个游戏数据 KVP。
public void SetTitleData() {
PlayFabServerAPI.SetTitleData(
new SetTitleDataRequest {
Key = "MonsterName",
Value = "Dorf"
},
result => Debug.Log("Set titleData successful"),
error => {
Debug.Log("Got error setting titleData:");
Debug.Log(error.GenerateErrorReport());
}
);
}
使用 Game Manager 设置游戏数据替代
替代也是一组 JSON 键值对,理想情况下应用于拥有主游戏数据的键值对中所需的增量更改。 与作为新键值的主游戏数据相比,增量更改可能包括键值对、现有键值的更改或键的删除(以 NULL 作为值的输入)。
如果要将替代添加到主游戏数据,请执行以下步骤。
- 在 Game Manager 中打开游戏。
- 选择 Content,然后选择 Title Data。
- 选择New Override。
- 输入 Override Label,并为 Key 和 Value 输入值。 Key 和 Value 都以字符串形式存储。
- 使用 Save 按钮保存新游戏数据替代。
注意
目前,此替代密钥/值对集仅适用于 试验。 如果玩家属于包含游戏数据替代的实验变体,则替代会在服务器端自动应用,在客户端上随游戏数据返回。 游戏数据替代值可能需要最多一分钟刷新并保留。
内部游戏数据
与用户数据类似,游戏数据具有对客户端隐藏的内部存储。 也可以在 Game Manager 中或通过服务器 API 设置此数据。
通过在 C# 中调用服务器 API 来获取内部游戏数据
public void GetTitleInternalData()
{
PlayFabServerAPI.GetTitleInternalData( new GetTitleDataRequest(),
result => {
if (result.Data == null || !result.Data.ContainsKey("PlayFab")) Debug.Log("No PlayFab");
else Debug.Log("PlayFab: " + result.Data["PlayFab"]);
},
error => {
Debug.Log("Got error getting titleData:");
Debug.Log(error.GenerateErrorReport());
}
);
}
通过在 C# 中调用服务器 API 来设置内部游戏数据
public void SetTitleInternalData() {
PlayFabServerAPI.SetTitleInternalData(
new SetTitleDataRequest {
Key = "PlayFab",
Value = "{ \"Status\": \"Secretly Awesome\" }"
},
result => { Debug.Log("Set titleData successful"); },
error =>
{
Debug.Log("Got error setting titleData:");
Debug.Log(error.GenerateErrorReport());
});
}