初始化序列
初始化分为四步。第一步是可选的;其余三步是必需的。第 1 步:设置自定义内存钩子(可选)
如果你的游戏使用自定义内存分配器,请在调用任何其他 PlayFab API 之前调用 PFMemSetFunctions。这会将所有 SDK 的内存分配路由到你自己的alloc 和 free 回调。
PFMemSetFunctions 必须在 PFInitialize 之前调用。一旦钩子设置完成,就不能再次调用。
第 2 步:初始化 PlayFab Core
PFInitialize 设置 SDK 的全局状态,包括 HTTP 层和后台任务队列。具体签名因平台而异。Windows、Linux、iOS 和 macOS
nullptr 以使用默认的线程池队列。
Android
在 Android 上,你还必须提供 Java VM 和应用程序上下文,以便 SDK 可以初始化 libHttpClient:如果你没有显式调用 PFInitialize,PFServicesInitialize 会使用默认参数在内部调用它。对于大多数游戏来说这没问题。但是,如果你通过 PFMemSetFunctions 使用自定义内存钩子,你必须自己调用 PFInitialize — 否则 PFServicesInitialize 会在你的内存钩子生效之前初始化 Core,SDK 会转而使用默认的分配例程。
第 3 步:创建服务配置
PFServiceConfigCreateHandle 创建一个句柄,告诉 SDK 目标是哪个 PlayFab 游戏(title)和端点。你可以在 Game Manager 中找到这两个值。第 4 步:初始化 PlayFab Services
PFServicesInitialize 在 Core 之上设置 Services 层(Inventory、Leaderboards、Friends 等)。Windows、Linux、iOS 和 macOS
nullptr。
Android
在 Android 上,传入一个包含 Java VM 和应用程序上下文的 HCInitArgs 结构:PFServiceConfigHandle 生命周期
PFServiceConfigHandle 是一个引用计数的句柄。SDK 通过引用计数管理其内部生命周期,但你负责关闭自己拥有的每一个句柄。复制句柄
当你需要在管理自己生命周期的组件之间共享服务配置时,使用 PFServiceConfigDuplicateHandle:关闭序列
关闭与初始化相反。你必须在 Core 之前反初始化 Services,且两个调用都是异步的。第 1 步:关闭所有已打开的句柄
在拆除 SDK 之前,关闭你拥有的每一个 PFEntityHandle 和 PFServiceConfigHandle:第 2 步:反初始化 Services
PFServicesUninitializeAsync 拆除 Services 层。在继续之前等待其完成。第 3 步:反初始化 Core
Services 清理完成后,调用 PFUninitializeAsync 拆除 Core:如果你没有显式调用 PFInitialize,则可以跳过 PFUninitializeAsync。在这种情况下,PFServicesUninitializeAsync 会自动处理 Core 的清理。但是,如果你自己调用了 PFInitialize,则必须自己调用 PFUninitializeAsync。
