Unity5.1 新的網路引擎UNET(八) UNET 系統概括,unity5.1unet
孫廣東 2015.7.12
Server and Host
在Unity 的 網路系統,遊戲有 一個伺服器和多個用戶端。當沒有專用的伺服器時,用戶端之一扮演伺服器的角色 — — 我們稱之為此用戶端“host”
host (主機)是一個伺服器和 用戶端在同一進程中。主機 將使用一種特殊的用戶端被稱為 LocalClient,而其他用戶端是 RemoteClients。LocalClient 與(本地) 伺服器通訊 通過直接的函數調用和訊息佇列,因為它是同一進程中。它實際上與伺服器共用一個 情境。RemoteClients 通過週期性網路連接與伺服器進行通訊。
網路系統的目標是 LocalClients 和 RemoteClients 的代碼是相同的,所以開發人員只需大部分時間想一種類型的用戶端的。
Instantiate and Spawn
在Unity中,GameObject.Instantiate 建立新的Unity遊戲對象。但與連網系統在一起, 對象必須也會“spawned” 要在網路上啟用。這隻能在伺服器上,並且導致要在串連的用戶端上建立對象。一旦對象被Spawning System產生,分布式的對象生命週期管理和狀態同步。
Players, Local Players and Authority
在網路系統中,玩家對象都是特殊的。還有伴玩遊戲,每個人的player 對象和 命令 都將路由 到該對象。一個人不能對另一個人的player對象調用命令 - 只有他們自己。所以是的“my” player 對象的概念。當添加一個player 和聯絡 把他們串連時,這個player對象就成為該玩家用戶端上的“local player” 對象。那裡是被設定為 true,並且回調在用戶端上的對象調用的 OnStartLocalPlayer() 屬性 isLocalPlayer。顯示兩個用戶端和他們 local players.。
只是 “yours” 的player對象 將已設定了 isLocalPlayer 標誌。這可以用於篩選 輸入的處理,能夠處理相機附件,或做任何其他用戶端只應做為您的player的身邊事。
除了 isLocalPlayer,player對象可以有 “local authority”. 這意味著其擁有者的用戶端上的player對象是負責對象 — — 它有授權。最常用的是 控制運動,但也被使用其他的東西。NetworkTransform 組件明白這一點,並將從用戶端發送移動,如果設定該選項。NetworkIdentity 有一個複選框用於設定 LocalPlayerAuthority。
對於非玩家對象如敵人,還有沒有相關聯的用戶端,所以權威駐留在伺服器上。
NetworkBehaviour 上的屬性 "isAuthority" 可以用來告訴是否 對象具有授權。所以非玩家對象在伺服器上,具有權威和player對象與 localPlayerAuthority 有授權在其擁有者的用戶端上。
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。