游戏数据快速入门

游戏数据是一组纯文本键值对,用于在服务器上远程存储和管理游戏的配置数据。 它使游戏宽度配置变量易于访问和整理,可在客户端上检索。

本快速入门介绍如何以编程方式创建和使用游戏数据。

这是一个重要的主题,因为将游戏的配置数据远程存储在服务器上(可以随时更改)是使用 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 设置游戏数据

如果要使用游戏管理器将主游戏数据添加到游戏,请执行以下步骤。

  1. Game Manager 中打开游戏。
  2. 选择 Content,然后选择 Title Data
  3. 选择 New Title Data
  4. 在新游戏数据页面,为 KeyValue 输入值。 KeyValue 都以字符串形式存储。
  5. 使用 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 作为值的输入)。

如果要将替代添加到主游戏数据,请执行以下步骤。

  1. Game Manager 中打开游戏。
  2. 选择 Content,然后选择 Title Data
  3. 选择New Override
  4. 输入 Override Label,并为 KeyValue 输入值。 Key 和 Value 都以字符串形式存储。
  5. 使用 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());
        });
}

另请参阅