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
都有一個關聯的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