问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

游戏数据快速入门

创作时间:
作者:
@小白创作中心

游戏数据快速入门

引用
1
来源
1.
https://learn.microsoft.com/zh-cn/gaming/playfab/features/titledata/quickstart?source=recommendations

游戏数据是用于存储和管理游戏配置信息的重要工具,它以键值对的形式存储在服务器上,可以随时进行更新。本文将介绍如何使用PlayFab服务创建和使用游戏数据,包括通过客户端和服务器端API进行数据的获取和设置,以及使用GameManager进行管理。

游戏数据快速入门

游戏数据是一组纯文本键值对,用于在服务器上远程存储和管理游戏的配置数据。 它使游戏宽度配置变量易于访问和整理,可在客户端上检索。
本快速入门介绍如何以编程方式创建和使用游戏数据。
这是一个重要的主题,因为将游戏的配置数据远程存储在服务器上(可以随时更改)是使用 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 设置游戏数据

如果要使用游戏管理器将主游戏数据添加到游戏,请执行以下步骤。
2. 在Game Manager中打开游戏。
4. 选择Content,然后选择Title Data
6. 选择New Title Data
8. 在新游戏数据页面,为KeyValue输入值。KeyValue都以字符串形式存储。
10. 使用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 作为值的输入)。

如果要将替代添加到主游戏数据,请执行以下步骤。
2. 在Game Manager中打开游戏。
4. 选择Content,然后选择Title Data
6. 选择New Override
8. 输入 Override Label,并为KeyValue输入值。 Key 和 Value 都以字符串形式存储。
10. 使用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());
        });
}
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号