- 使用 PlayFab 驗證 Photon 玩家。
- 使用 PlayFab CloudScript 回呼接聽房間事件。
Photon 快速入門
本快速入門說明如何設定 Photon Multiplayer 以搭配 PlayFab 運作。目前,PlayFab 提供下列 Photon 整合:- 使用 PlayFab 驗證 Photon 玩家。
- 使用 PlayFab CloudScript 回呼接聽房間事件。
如需在 Unity 上獲得完整支援的 PlayFab 多人遊戲和聊天體驗,請參閱 PlayFab Party Unity 外掛程式以取得詳細資訊。
必要條件
- 已匯入 PlayFab SDK 並已設定遊戲的 Unity 專案。
- 已註冊的 PlayFab 遊戲。
本指南省略了聊天應用程式設定。若要整合您的聊天應用程式,請建立新的 Photon Chat 應用程式,並在 Unity 和 PlayFab Game Manager 的 Photon 附加元件頁面中對應的方塊中輸入 App ID。
設定 Photon 應用程式
- 註冊並登入 Photon 儀表板後,選取 Create a new App。

- 選取 Photon Type。
- 選擇 Name。
- 建立 Description。
- 選取 Create 以提交。

設定驗證
- 在清單中找到新建立的應用程式,然後選取 Manage。

- 在應用程式儀表板中,找到並儲存位於頁面 Title 下方的 App ID。

- 找到 Authentication 區段。
- 選取 Custom Server。

PlayFabTitleId 預留位置取代為您自己的遊戲識別碼。
- 輸入 URL。
- 選取 Create 按鈕以提交。

為 Photon 設定 PlayFab 遊戲
瀏覽至您遊戲的 Game Manager 頁面,然後:- 瀏覽至 Add-ons 索引標籤。
- 在 Add-ons 清單中,找到並選取 Photon。

- Photon Add-on 頁面可讓您指定 Photon Realtime Application ID 來安裝 Photon。
- 您可以選擇性地指定 Chat App ID。
- 安裝 Add-on (3) 後,會產生 Photon secret Key (2)。
- 請將其儲存,以便日後設定 Webhook 時使用。
請記得將您的 Photon 秘密金鑰儲存在安全且容易存取的位置。設定 Webhook 時會派上用場。

設定 Photon Webhook
作為選用的整合,Photon 可以將特定事件傳送至您的 PlayFab CloudScript。這是透過 Webhook 完成的:- 您指定基底 URL。
- 然後為每個可用的事件指定路徑。
- 路徑實際上就是在您的 CloudScript 中實作的處理常式名稱。
Title Id 預留位置取代為您自己的遊戲識別碼。
PhotonSecretKey 權杖取代為您在 Photon Add-on 頁面上產生的秘密金鑰。
- 填寫 Base URL。
- 為每個可用的 Events 指派 CloudScript 處理常式 Name。
- 移除任何 CustomHttpHeaders。
- 選取 Save 按鈕以提交。

設定 Unity 專案
本指南假設您已匯入並設定 PlayFab SDK,且已設定遊戲設定。- 首先,瀏覽至 Asset Store。
- 找到 Photon Unity Networking Free 套件。
- 選取 Import (1)。
- 您可以檢查匯入的檔案。
- 然後選取 Import (2)。

- 輸入您在 Photon Application Dashboard 中為所建立之 Photon App 找到的 Realtime Application ID (1)。
- 選取 Setup Project (2)。
- 設定完成後,選取 Close (3)。

- 瀏覽至頂端視窗面板。
- 選取 Window。
- 然後選取 Photon Unity Networking (1)。
- 最後選取 Highlight Server Settings (2)。
- Standard Unity 專案視窗會顯示 PhotonServerSettings (3) 物件。
- 選取該物件,以在 Unity Inspector 視窗中顯示其設定。

作為 PhotonServerSettings 的一部分,您可以選擇指派 Chat Application ID。
實作 PlayFab 至 Photon 的驗證
當您在 PlayFab Game Manager 中為遊戲啟用 Photon Add-on,並在 Photon Application 儀表板上設定驗證時,PlayFab 可讓您在 Photon 環境內驗證現有的 PlayFab 玩家。 這表示您可以完全避免為 Photon 實作任何使用者管理。- 瀏覽至 Photon Unity Networking Free 套件 Classic 版本中的 DemoHub-Scene-V2 場景。
- 此場景是套件中所有範例的中樞。
- 由於它是第一個載入的場景,讓我們新增一個小型指令碼來啟用 PlayFab 與 Photon 的驗證。
- 建立一個名為 PlayFabAuthenticator 的空 GameObject。
- 然後在 Unity Inspector 視窗中,將同名的元件新增至此 GameObject。

PlayFabAuthenticator 元件的程式碼,然後儲存並關閉檔案。
測試 PlayFab 至 Photon 的驗證
- 啟動場景。
- 檢查主控台訊息的流程。 確認:
- 對 PlayFab 本身的驗證已成功。
- 已取得 Photon 權杖。

- 為了確保 PlayFab 驗證已完成,請選取 Demo Boxes。
- 然後選取 Load Demo,如下圖所示。


Photon 房間事件 + CloudScript
Photon 配對系統具有房間的概念。如果您不熟悉此概念,請參閱 Photon 配對指南。 PlayFab 可讓您攔截各種房間事件。下列房間事件只需要 CloudScript 即可攔截:RoomCreatedRoomJoinedRoomLeftRoomClosed
RoomPropertyUpdatedRoomEventRaised
一旦您為房間事件引進處理常式,它就會成為事件處理流程的重要部分。因此,執行 CloudScript 時產生的錯誤可能會對整個系統造成問題。例如,如果
RoomCreated 處理常式擲回錯誤,您的用戶端也會擲回錯誤,且無法正常連線。Room Created 處理常式
每次建立 Photon 房間時,都會叫用RoomCreated 處理常式。下列 CloudScript 處理常式會攔截此類事件。
您可以使用 “args” 引數取得有關事件的更多資料。
Room Joined 處理常式
每次玩家加入房間時,都會叫用RoomJoined 處理常式。下列 CloudScript 處理常式會攔截此類事件。
RoomCreated 攔截第一位加入的玩家。您可以使用 “args” 引數取得有關事件的更多資料。
Room left
每次玩家離開房間時,都會叫用RoomLeft 處理常式。下列 CloudScript 處理常式會攔截此類事件。
Room Closed 處理常式
每次最後一位玩家離開房間且房間中已沒有玩家時,都會叫用RoomClosed 處理常式。下列 CloudScript 處理常式會攔截此類事件。
Room Property Updated
每次變更房間屬性時,都會叫用RoomPropertyUpdated 處理常式。下列 CloudScript 處理常式會攔截此類事件。
在此處理常式中,
currentPlayerId 未定義。如果房間屬性是從用戶端變更的,您可以使用 “args” 引數,並參考 UserId 以取得負責的玩家。Room Event Raised
每次引發自訂房間事件時,都會呼叫 Room Event Raised。下列 CloudScript 處理常式會攔截此類事件。測試房間事件處理常式
此範例擴充了先前的範例 (PlayFab + Photon 驗證)。 為您的遊戲上傳下列 CloudScript。PlayFabAuthenticator 指令碼,加入引發自訂事件並設定自訂房間屬性的新範例程式碼。擴充版本也使用 Awake 方法,以免在場景載入之間終結物件。
- 執行中樞場景,並等候 PlayFab 驗證完成 (1)。
- 然後載入 Boxes Demo 場景 (2)。

- 場景載入後,等候對等連線至新建立的房間 (1)。
- 然後選取左上角的 Execute Example (2)。
- 觀察主控台輸出 (3)。
- 確認沒有發生任何錯誤。

- 一開始,我們的 Photon 執行個體沒有開啟的房間。當我們啟動範例時,Photon 為 Boxes Demo 建立了房間。
- 第一位加入的玩家是要求房間的玩家。因此未記錄任何 RoomJoined Event。接著我們執行了範例程式碼:
- 首先,我們引發了自訂的房間事件。
- 然後,我們設定了自訂的房間屬性。
- 然後我們停止了 Unity 播放模式。這導致我們的用戶端離開房間。
- 由於我們中斷連線的用戶端是最後一個,因此已沒有其他用戶端,Photon 便關閉了房間。

