Network manager:unity官方提供聯網組件
可以指定player prefab:即每連入一個客戶端就生成一個player prefab
Network manager HUD:用來顯示左上角UI
Network Identity:局域網的標識符
Server only 只存在於服務器端
Local player authority:每一個都有
Network Transform :用來同步位置(通過當前player來同步到其他客戶端上)
Ctrl+ D build and run一個版本
unityEngine.Networking
平常一個腳本類是繼承自MonoBehavior,網絡的類的話得繼承NetBehavior,因爲這個類有一個靜態方法:isLocalPlayer,用來判斷是不是本地玩家,以防止操作混亂,isSever用來判斷是不是服務器端
Public override void OnStartLocalPlayer()//這個方法只會在本地角色調用,在角色被創建的時候
Networksever的靜態方法spawn()可以生指定物體同步到各個客戶端
Networktransform組件可以同步transform 和 剛體組件
血條的展示:
Canvas->Slider :
Background:背景色
FIll Area->FIll:拖動之後的顏色
Handle Side Area:託條
做血條的時候託條不需要,直接刪除,拖動之後的顏色無法填充慢整個條,需要吧Fill Area->Fill拖動到Background下面,然後把Fill Area刪除掉,找到FIll的Rect Transform的錨點對齊,按alt+右下角的來對齊
相關檢測,邏輯判斷等只在一個端口檢測(客戶端或者服務器端)不然,比如服務器端檢測到了後執行相應的操作同步到客戶端會造成不想要的結果
子彈生成應該在服務器端生成然後同步到客戶端,需要在子彈的prefab上添加network
identity 然後拖到network manager上的prefab
list 在函數頭上面添加[Command]說明旨在服務器端調用,函數必須以cmd開頭
服務器端如何同步?
在需要同步的變量前添加[SyncVar]的字段,讓該變量擁有同步的屬性
[SyncVar(hook = “方法名”)]當被檢測的變量(需要同步的變量)的值發生改變的時候調用該方法,在每個客戶端都會進行調用
[ClientRpc]表示方法在客戶端調用,該方法必須以Rpc開頭
跟角色有關的用localPlayer來處理用其他客戶端來同步
一個腳本掛在不同用處的的對象上是,如要區分,可加入一個publuic布爾變量,在需要執行的一方勾選