Skip to main content
本快速入门可帮助你在 Cocos2d-x 引擎中进行首次 PlayFab API 调用。 在调用任何 PlayFab API 之前,你必须拥有一个 PlayFab 开发者帐户

Cocos2d-x 项目设置

操作系统:本指南针对 Windows 10 编写,使用 Visual Studio 2015。Cocos 可在大多数现代操作系统和环境中运行。安装说明相似,但每种组合各有不同。 如果你在为其他平台构建,所需文件相同,但你需要自行完成项目设置。Visual Studio 2013 的步骤相同,但此处提供的屏幕截图看起来可能与你的略有不同。
  1. 下载并安装 Cocos2d-x
  2. 配置好 Cocos2d-x 后,使用 Cocos CLI 创建项目:
    • 导航到你希望存储 Cocos 项目的位置
    • 在父文件夹中打开命令窗口(Cocos CLI 将创建实际的项目目录)
      • 按住 Shift 键,在资源管理器窗口的空白处右键单击。
    • 在新的控制台窗口中输入以下命令:
      • cocos new CocosGettingStarted -l cpp
        • 请确保目标子目录(CocosGettingStarted)尚不存在——如果该文件夹已存在,此命令将失败。
        • 如果收到消息 “‘cocos’ isn’t recognized as an internal or external command”,说明你未正确配置 cocos 安装(请返回 Cocos Windows 安装指南)。
        • 如果成功,将会有一个新文件夹 CocosGettingStarted。本指南将该目录位置称为 {CocosGettingStarted}
    • 成功输出应类似于下面提供的示例。
  1. 下载 PlayFab Cocos2d-xSdk:Cocos2D-x SDK (C++)。保存并解压到临时位置 {PlayFabCocos}
    • 在 Windows 资源管理器中打开以下文件夹:{PlayFabCocos}/PlayFabClientSDK
    • 在另一个 Windows 资源管理器中打开以下文件夹:{CocosGettingStarted}/Classes
  2. 将 {PlayFabCocos}/PlayFabClientSDK 中的所有文件复制粘贴到 {CocosGettingStarted}/Classes
  3. 在 Visual Studio 中,加载 {CocosGettingStarted}/proj.win32/CocosGettingStarted.sln
  4. 我们希望将 PlayFab 文件添加到 Cocos 项目中。
  5. 在 Visual Studio 的解决方案资源管理器面板中,展开到以下文件夹:Solution/CocosGettingStarted/src
  6. 在 {CocosGettingStarted}/Classes 处打开一个 Windows 资源管理器窗口
    • 选择 {CocosGettingStarted}/Classes 中的所有文件,但不包括 AppDelegate.h、AppDelegate.cpp、HelloWorldScene.h、HelloWorldScene.cpp
    • 将所有这些文件从资源管理器拖放到上面找到的 Visual Studio Solution/CocosGettingStarted/src 文件夹中。如果遇到问题,可以一次拖放一个文件,但请务必小心并将它们全部拖过去
    • 你应该能在 VS 项目中看到这些文件:
PlayFab 使用了几个 Cocos 库,必须手动添加到依赖项列表中。
  • 打开 CocosGettingStarted 项目的 属性 窗口(如下所示)。
  • 将附加包含目录替换为以下内容: $(ProjectDir)..\cocos2d\external\zlib\include;$(ProjectDir)..\cocos2d\external\curl\include\win32;$(EngineRoot)cocos\audio\include;$(EngineRoot)external;$(EngineRoot)external\chipmunk\include\chipmunk;$(EngineRoot)extensions;..\Classes;..;%(AdditionalIncludeDirectories);$(_COCOS_HEADER_WIN32_BEGIN);$(_COCOS_HEADER_WIN32_END);..\cocos2d
我们添加的是 curl 和 zlib,它们是 Cocos 附带的库,但默认未启用。
你的 CocosGettingStarted 项目现在应该可以编译(甚至可以运行),但我们还没有进行任何 PlayFab API 调用。 安装完成!

设置你的第一次 API 调用

本指南提供进行首次 PlayFab API 调用的最低步骤。在应用中可以看到确认信息。
  1. 在 Visual Studio 中,在 Solution/CocosGettingStarted/src 文件夹内,打开 HelloWorldScene.h 并将内容替换为以下内容:
    • 在 Visual Studio 中,在 Solution/CocosGettingStarted/src 文件夹内,打开 HelloWorldScene.h,将其内容替换为下面显示的内容。
  1. 紧接着打开 HelloWorldScene.cpp,并将其内容替换为以下内容:
这些文件采用了作为新 Cocos 项目模板一部分的现有 HelloWorldScene,并对其进行修改以包含你的第一次 PlayFab API 调用。

完成并执行

  1. 构建并执行你的 Cocos 项目:下拉菜单 -> 调试 -> 开始调试。
  2. 这将提示你构建。选择
  3. 你应该会看到显示以下内容的屏幕: Congratulations, you made your first successful API call!
  4. 现在,你可以开始进行其他 API 调用并构建你的游戏。 有关所有可用客户端 API 调用的列表,请参阅 PlayFab API 参考 文档。
祝你编程愉快!

代码解构

这个可选的最后一节详细描述了上面源代码的每一部分。
  • HelloWorldScene.h
    • 这仅在 Cocos 生成的默认 HelloWorldScene.h 上做了少量修改。
    • 具体来说,它定义了我们使用的一些 Cocos GUI,以及 OnLoginSuccessOnLoginFail 的原型。
    • 其他一切都是标准的 Cocos 引擎函数。
  • HelloWorldScene.cpp
    • createScene() 是标准的 Cocos 引擎函数。
    • init()
      • 普通的 Cocos GUI 内容:closeItemtestReportLabel
      • PlayFab::PlayFabSettings::titleId = "xxxx";
        • 每个 PlayFab 开发者都会在 Game Manager 中创建一个 title。当你发布游戏时,必须将该 titleId 编入游戏代码中。这样可以让客户端知道如何访问 PlayFab 中的正确数据。对大多数用户而言,只需将其视为使 PlayFab 正常工作的必要步骤即可。
      • PlayFab::ClientModels::LoginWithCustomIDRequest request;
        • 大多数 PlayFab API 方法都需要输入参数,这些输入参数被打包到请求对象中。
        • 每个 API 方法都需要一个唯一的请求对象,其中混合了可选和必填参数。
          • 对于 LoginWithCustomIDRequest,有一个必填参数 CustomId,用于唯一标识玩家;以及 CreateAccount,它允许通过此调用创建新帐户。
        • 对于登录,大多数开发者会希望使用更合适的登录方法。
          • 有关所有登录方法和输入参数的列表,请参阅 PlayFab 登录文档。常见选择包括:
            • LoginWithAndroidDeviceID
            • LoginWithIOSDeviceID
            • LoginWithEmailAddress
      • PlayFab::PlayFabClientAPI::LoginWithCustomID(request, OnLoginSuccess, OnLoginFail, nullptr);
        • 这将开始对 LoginWithCustomID 的异步请求,并在完成时调用 OnLoginSuccessOnLoginFail 函数。
    • update(float delta)
      • 仅设置 statusMsg 变量并不会更新屏幕上的文本。
      • 此函数在每个 tick 将 GUI 文本设置为与 statusMsg 的内容匹配(效率不高)。
    • OnLoginSuccess(result, customData)
      • 当调用成功回调时,许多 API 回调的 result 对象将包含请求的信息。
      • LoginResult 包含玩家的一些基本信息,但对大多数用户来说,登录只是调用其他 API 之前的必要步骤。
    • OnLoginFail(error, customData)
      • 如果调用了错误函数,则表明你的 API 调用失败。
      • API 调用可能因多种原因失败,你应始终尝试处理失败。
      • API 调用失败的原因(按可能性排序)
        • PlayFabSettings.TitleId 未设置。如果你忘记为你的 title 设置 titleId,那么一切都无法正常工作。
          • 在 Cocos 中,如果你未能正确设置 titleId,curl 库可能会直接使游戏崩溃。
        • 请求参数。如果你未为特定 API 调用提供正确或必需的信息,则该调用将失败。有关更多信息,请参阅 error.errorMessageerror.errorDetailserror.GenerateErrorReport()
        • 设备连接问题。手机会不断丢失/恢复连接,因此任何时候的任何 API 调用都可能随机失败,随后又立即成功。进入隧道可能会让你完全断开连接。
        • PlayFab 服务器问题。就像所有软件一样,可能会有问题。请参阅我们的发行说明以获取更新。
        • 互联网并非 100% 可靠。有时消息会损坏或无法到达 PlayFab 服务器。
      • 如果你在调试问题时遇到困难,且错误回调中的信息不够充分,请到我们的论坛与我们联系。
    • customData 是一个 void 指针,可以以任何方式用于建立上下文。
      • 在 C++ 中,维护 API 调用的上下文比较困难,因此我们添加了 customData 参数,它可以将任何对象中继到回调,可以按你喜欢的任何方式使用它来建立上下文。
      • 因此,如果你进行 API 调用以检索库存,可以将玩家或库存指针作为 customData 传递,并在回调中更新该对象上的库存。
最后修改于 2026年8月25日