Skip to main content
默认情况下,大多数 PlayFab SDK 会缓存玩家登录结果。当你期望单个玩家登录时,这种缓存在最常见的场景中很方便。在你支持多个并发玩家的游戏或你管理玩家身份验证材料和服务器凭证的服务器中,这种缓存可能会造成阻碍。为方便这些场景,PlayFab SDK 包含静态和实例化两种 API 类。

静态与实例化 API 类

PlayFab 的大多数示例和示例代码都是使用静态 API 类构建的。例如,在 Unity 中,你可能会看到对 PlayFabClientAPI 的引用。这些静态类写入和读取 SDK 内的静态状态。它们对静态状态的依赖使得在同一游戏客户端中处理多个玩家时难以使用这些类。实例化 API 类避免了这些问题,以增加你的管理和跟踪要求为代价。当你需要支持多个同时进行的 PlayFab 登录时,我们建议使用实例化 API 类。 在 Unity SDK 中,PlayFabClientInstanceAPIPlayFabClientAPI 的实例化版本。所有其他 API 类都遵循类似的命名模式。当使用 API 类的实例化版本时,你必须先创建该类的实例,然后才能调用任何方法。要创建实例,你必须指定一些额外的上下文。对于大多数类,所需的额外上下文只是玩家的身份验证上下文。在 Unity 中,此上下文是 PlayFabAuthenticationContext。有些类包含登录调用。对于这些调用,你可能还没有玩家的身份验证上下文。如果是这种情况,你只需提供基本设置,如 title ID。这些设置通过 PlayFabApiSettings 对象传入。

使用实例化 API 类

一旦你使用适当的身份验证上下文或 API 设置对象创建了实例化 API 类,就可以像使用静态类那样使用它。所有请求和响应对象都相同。唯一的区别是你负责跟踪实例的生命周期,并确保任何 PlayFab 的潜在调用方都能获得适当的实例。当你处理多个玩家时,你需要多个 API 类实例,每个玩家一个。通常最简单的做法是将这些实例封装在作为所有者的 player 对象后面进行管理,但这由你决定。 登录玩家的实例化类(例如 PlayFabClientInstanceAPI)也会在该 API 类实例中创建并缓存该玩家的身份验证上下文。此功能允许你在创建任何更多所需的类时轻松引用身份验证上下文。

Unity 示例

此示例代码演示了多个玩家如何登录游戏,并在单独的类实例中跟踪独立的状态。在此示例中,API 类和基本功能封装在一个简单的 PlayFabPlayer 对象后面。当游戏开始时,我们让两个玩家登录,然后获取 PlayFab 中为每个玩家存储的任何数据。

Unreal 示例

此代码示例演示了 Unreal 中一个包含其自身 PlayFab 登录上下文的 actor。它展示了如何将 PlayFab API 实例类封装在 ALoginActor 类中。可以将多个 ALoginActor 实例添加到地图,赋予它们自己的 CustomId,并独立执行 PlayFab 操作。 LoginActor.h:
LoginActor.cpp:

服务器身份验证

类似于实例化 API 类允许游戏客户端处理多个玩家,它们允许服务器处理 title 和玩家身份验证的组合,甚至同时处理多个 title。基本模式几乎相同。实例化一个 API 类以处理服务器登录,为该实例提供适当的 PlayFabApiSettings 对象,然后调用身份验证 API。如果你在服务器上,该 API 通常是 PlayFabAuthenticationInstanceAPI.GetEntityToken。就像玩家登录一样,GetEntityToken 调用的结果被缓存在 API 类实例中,并且可以通过 authenticationContext 实例属性引用以创建更多 API 类实例。
最后修改于 2026年8月13日