This document is about: FUSION 2
SWITCH TO

Network Runner

概述

NetworkRunner是Fusion的中心Unity元件,代表單個連網同儕節點。所有訊息傳遞、對戰配對、連線、生成、模擬和狀態複製都由該元件協調。多個NetworkRunner執行個體可以在單個Unity執行個體中運行,每個執行個體代表一個單獨的同儕節點。請參見多重同儕節點模式

用法

建立

網路運行器遊戲物件可以透過三種方式建立:

  • 在運行階段從預製件具現化
  • 作為場景物件載入
  • 透過向遊戲物件新增NetworkRunner元件,在運行階段動態建立

啟動與連線

建立後,NetworkRunner執行個體可以連線到對戰配對,也可以建立/加入房間。

建立或加入房間

NetworkRunner執行個體調用StartGame()將建立一個同儕節點,該同儕節點將加入或建立由StartGameArgs引數指定的房間。但是,在單人模式下,不會連接到Photon伺服器,也不會建立房間。

多重同儕節點模式中,所有場景物件和生成物件都是專用遊戲物件的下層,並被新增到與該運行器關聯的物理場景/物理場景2D中。

重要: 您只能使用NetworkRunner一次。一旦網路運行器與遊戲階段中斷連線或連線失敗,則應將其銷毀,並建立一個新的網路運行器執行個體以啟動任何新的遊戲階段。

運行器支援元件

啟動時,NetworkRunner元件將查找並註冊所有下層SimulationBehaviour元件。這些元件將接收FixedUpdateNetwork()Render()回調。

NetworkRunner也查找執行INetworkRunnerCallbacks介面的所有下層元件,並為回調註冊它們。

內建Fusion運行器元件

有許多Fusion元件可以新增到網路運行器遊戲物件中,從而擴展運行器的功能。

  • HitboxManager - 在運行時自動新增並管理命中框和命中框歷史。請參閱延遲補償
  • RunnerLagCompensationGizmos - 新增這個元件以啟用延遲補償 gizmos。
  • RunnerAOIGizmos - 新增這個元件以啟用興趣區域 gizmos。
  • RunnerEnableVisibility - 新增後,將為多重同儕節點模式啟用運行器可見性,並且所有場景和生成遊戲物件都將為可見性處理而註冊。為了讓運行器可見性控制視窗工作所需。請參閱多重同儕節點Fusion運行器可見性控制視窗

自訂模擬行為運行器元件

您可以透過將繼承自SimulationBehaviour或執行INetworkRunnerCallbacks(或兩者兼有)的元件新增到網路運行器遊戲物件中,來建立自己的運行器特定支援元件。

當調用NetworkRunner.StartGame()時,NetworkRunner執行個體將自動找到這些元件,並且相關的回調將在適用時被調用。

自訂INetworkRunnerCallbacks

啟動時,NetworkRunner元件將查找所有下層元件並將其註冊為INetworkRunnerCallbacks。請參見INetworkRunnerCallbacks API參照

註: 由於執行順序的原因,某些回調可能不適用,也不會被調用。例如,不會為先前加入的玩家發出OnPlayerJoined()

networkrunner in the hierarchy of core objects
網路運行器管理所有連線、對戰配對、訊息、事件回調、快照記憶體和網路物件同步。

玩家 / 玩家參照架構

除了在專用伺服器或共享模式遊戲伺服器的情況下,所有同儕節點都被假設為代表提供輸入的人類玩家。因此,每個NetworkRunner都有一個關聯的PlayerRef結構值。

本機PlayerRef值由Runner.LocalPlayer傳回。對於沒有玩家(專用伺服器或共享模式遊戲伺服器)的情況,值為PlayerRef.None

PlayerRef用於只是哪個同儕節點具有網路物件的輸入和狀態授權,並用於透過遠端程序調用瞄準同儕節點。

網路連線

同儕節點的連線和傳輸處理由NetworkRunner封裝。它處理到對戰配對伺服器、房間伺服器和遊戲伺服器的連線。

對戰配對

請參見對戰配對

刷新管理

網路運行器負責確定何時需要模擬和重新模擬刷新。每次Unity更新,NetworkRunner都會根據自上次刷新模擬以來經過的時間量,來確定需要模擬的刷新數量。

此外,房間中的客戶端不斷接收來自伺服器的遙測,以調節它們應該領先伺服器多遠。隨著時間的推移,客戶端根據需要來加快和降低其刷新率,以確保發送的刷新更新在伺服器需要之前到達伺服器。

當模擬一個刷新時,Fusion會調用所有FixedUpdateNetwork()回調,以及與模擬相關的許多其他事件回調

網路物件管理

網路運行器管理網路物件、複製、場景管理以及所有與網路和網路物件相關的回調的生命週期。

生成

請參見網路物件生成

物理場景

多重同儕節點模式中,每個運行器都有一個相關的Unity PhysicsScene和/或PhysicsScene2D,所有場景和生成物件都載入到其中。您可以使用Runner.GetPhysicsScene()Runner.GetPhysicsScene2D()來獲得這些場景。

興趣管理

請參見興趣管理

事件函數

所有網路行為事件和計時段都源自NetworkRunner元件。請參見網路行為事件函數回調介面

SimulationBehaviour虛擬事件回調方法:

  • 固定更新網路()
  • 轉譯()

除了上述SimulationBehaviour回調之外,NetworkBehaviour也公開了這些虛擬事件回調方法:

  • 已生成()
  • 已取消生成()

可以使用以下這些介面新增其他NetworkRunner事件回調,例如:

  • IAfterSpawned
  • IBeforeAllTicks
  • IAfterAllTicks
  • IBeforeTick
  • IAfterTick
  • IPlayerJoined
  • IPlayerLeft

請參見網路行為回調介面以取得有關事件回調的更完整清單。

Back to top