跳轉到主要內容
本頁涵蓋 PlayFab Services SDK 完整的啟動和關閉順序。每個遊戲都遵循相同的高階模式:設定選擇性攔截、初始化 Core、建立服務設定、初始化 Services、執行工作,然後以相反順序關閉。

初始化順序

初始化有四個步驟。第一個步驟是選擇性的,其餘三個步驟是必要的。

步驟 1:設定自訂記憶體攔截 (選擇性)

如果您的遊戲使用自訂記憶體配置器,請在任何其他 PlayFab API 之前呼叫 PFMemSetFunctions。這會將所有 SDK 記憶體配置路由至您自己的 alloc 和 free 回呼。
PFMemSetFunctions 必須在 PFInitialize 之前呼叫。設定攔截之後,就無法再次呼叫它。
如果您不需要自訂記憶體管理,請略過此步驟。SDK 會使用預設的配置常式。

步驟 2:初始化 PlayFab Core

PFInitialize 會設定 SDK 的全域狀態,包括 HTTP 層和背景工作佇列。確切的簽章會因平台而異。

Windows、Linux、iOS 和 macOS

如果您想要控制由哪個佇列處理背景工作,請傳遞 XTaskQueueHandle。傳遞 nullptr 以使用預設的執行緒集區佇列。

Android

在 Android 上,您還必須提供 Java VM 和應用程式內容,SDK 才能初始化 libHttpClient:
如果您未明確呼叫 PFInitialize,PFServicesInitialize 會使用預設參數在內部呼叫它。這對大多數遊戲來說沒有問題。不過,如果您透過 PFMemSetFunctions 使用自訂記憶體攔截,就必須自行呼叫 PFInitialize;否則 PFServicesInitialize 會在記憶體攔截生效之前初始化 Core,而 SDK 會改用預設的配置常式。

步驟 3:建立服務設定

PFServiceConfigCreateHandle 會建立一個控制代碼,告知 SDK 要以哪個 PlayFab 遊戲和端點為目標。您可以在 Game Manager 中找到這兩個值。
所有後續的登入呼叫都需要傳回的 PFServiceConfigHandle。

步驟 4:初始化 PlayFab Services

PFServicesInitialize 會在 Core 之上設定 Services 層 (Inventory、Leaderboards、Friends 等)。

Windows、Linux、iOS 和 macOS

此參數保留供日後使用;請傳遞 nullptr。

Android

在 Android 上,傳遞包含 Java VM 和應用程式內容的 HCInitArgs 結構:
此呼叫成功之後,SDK 即已就緒。您可以將玩家登入並進行服務呼叫。

PFServiceConfigHandle 生命週期

PFServiceConfigHandle 是參考計數的控制代碼。SDK 會透過參考計數管理其內部存留期,但您必須負責關閉您擁有的每個控制代碼。

複製控制代碼

當您需要在各自管理存留期的元件之間共用服務設定時,請使用 PFServiceConfigDuplicateHandle:

關閉順序

關閉是初始化的反向順序。您必須先將 Services 取消初始化,再將 Core 取消初始化,而且這兩個呼叫都是非同步的。

步驟 1:關閉所有開啟的控制代碼

在終止 SDK 之前,請關閉您擁有的每個 PFEntityHandle 和 PFServiceConfigHandle:

步驟 2:將 Services 取消初始化

PFServicesUninitializeAsync 會終止 Services 層。請等候它完成後再繼續。

步驟 3:將 Core 取消初始化

Services 清除完成後,請呼叫 PFUninitializeAsync 以終止 Core:
如果您未明確呼叫 PFInitialize,可以略過 PFUninitializeAsync。在此情況下,PFServicesUninitializeAsync 會自動處理 Core 的清除。不過,如果您確實自行呼叫了 PFInitialize,就必須自行呼叫 PFUninitializeAsync。

完整範例

此範例示範 Windows 遊戲從初始化到關閉的完整生命週期:

常見錯誤

另請參閱

最後修改於 2026年10月8日