Social Hub
概述
Fusion Social Hub
是一個技術範例,展示了在一個專案中使用多個拓撲的方法,以及執行邏輯的方式,以便它將針對各個特定的拓撲來以不同的方式執行,同時也考慮了它們的固有差異。範例也展示了管理多個NetworkRunner
的方法以在遊戲階段之間轉換。
這個範例使用以下組合:
- 針對社交中樞的共享模式,其中許多玩家可以初始集會並且和NPC互動;及,
- 針對地牢的主機端模式遊戲階段,可以由少數玩家從社交中樞來進入(也就是建立及啟動)。在地牢裡,玩家可以摧毀箱子。
控制
- 只限主機端:LMB 以攻擊。
- 兩種拓撲:E 以互動。
在您開始之前
為了運行範例,首先在PhotonEngine儀表板中建立一個Fusion應用程式帳號,並且將它貼上到即時設定(可從Fusion選單中到達)中的App Id Fusion
欄位之中。
下載
版本 | 發布日期 | 下載 | Unity版本 | ||
---|---|---|---|---|---|
1.1.6 | 2023年4月12日 | Fusion 社交中樞 1.1.6 組建 169 |
連線管理器系統
連線管理器負責處理連線請求,將會有超過一個NetworkRunner
以處理兩種拓撲,它負責參照正確的運行器,以及施行所有必要的預防措施以避免與其他運行器之間產生矛盾。
應用程式
這個類別的主要目的是執行ConnectionManager
無法執行的已連線操作,這是因為它是一個Monobehaviour
而無法執行。在這個範例上,它只用於傳送一個RPC。
連線容器
是一個簡單的c#類別,其持有參照到一個NetworkRunner
、目前用在該運行器上的ConnectionData
、一個App
、運行器的回調類別,以及一些協助工具檢查。
連線資料
一個可指令碼物件,其將用於持有所有需要的資料,以發送一個連線請求到ConnectionManager
。這些是主要的屬性:
連線ID:關於連線的ID,各個獨立的遊戲階段應該有一個不同的ID。它將用作為一個遊戲階段屬性,以加入及在沒有可以加入的遊戲階段的情況下建立一個新的遊戲階段。
連線目標:由
ConnectionManager
使用以知道所需的連線是否將在一個Shared
或Host
遊戲階段上。
連線閘道
它含有一個參照到一個ConnectionData
,並且將被用作為一個區域觸發,以切換介面,來連線到在ConnectionData
定義的遊戲階段。
連線管理器
ConnectionManager.cs
將主要執行到所需的遊戲階段的連線,除了一些其他的公用程式邏輯之外,基於收到的連線目標來儲存參照到正確的ConnectionContainer
。
針對兩種拓撲來編輯程式碼
一個重要的注意事項是,有些邏輯將在不同的拓撲上有不同的工作方式,針對兩者提供支援的最好的做法是總是檢查Object.HasStateAuthority
而非Runner.IsServer
,因為它涵蓋了在共享模式中的狀態授權,以及主機端/伺服器模式中的主機端或伺服器。
同時,使用Fusion輸入,就算它在共享模式中不是非常有用,它將讓其在主機端/伺服器上工作,如同PlayerMovement
類別。
針對只在一個特定拓撲上運行的邏輯,Runner.Topology
將傳回與NetworkObject
有關的NetworkRunner
正在使用的拓撲。
第三方資產
動畫範例包含了由各自的創作者提供的多個資產。您可以在它們各自的網站上為您自己的專案取得完整的套件:
- Kay Lousberg的KayKit地牢
重要事項:為了在商業專案中使用它們,需要從各自的創作者購買一個授權。
Back to top