添加一個unet的管理器 Networkmanager服務器
在Spawn Info中能夠設置當一個客戶端鏈接進來的時候生成一個預設網絡
Network Identity: 網絡標識組件,須要同步的物體都必須添加這個組件ide
NetworkTransform組件: 添加後會同步位置信息3d
Networkmanager下的Registered Spawnable Prefabs : 須要在服務器進行生成的物體(同步物體) 須要註冊到這裏 而且註冊的物體須要有Network Identity(網絡標識組件) (只在服務器生成)orm
服務器調用的腳本須要繼承NetworkBehaviourblog
繼承後:繼承
可使用父類中的字段 isLocalPlayer 來判斷是不是本地客戶端建立的自動生成物體 ,經過這個可讓只有爲True的才能控制本身,不然會控制全部自動生成的物體,()能夠用於篩選 輸入的處理)同步
可使用override OnStartLocalPlayer()來判斷當前是不是本地客戶端, 這個是方法,啓動自動調用, 上邊的是屬性it
在服務器中調用方法須要添加[Command]標籤,而且這個方法名要以Cmd開頭 io
若是須要在全部客戶端都同步服務器生成的物體,須要添加NetworkServer.Spawn(Object o);方法
在服務器上處理相似血量,這樣不會出如今服務器中如碰撞檢測後將物體銷燬了可是客戶端尚未碰撞到(延時致使) 而引起服務器中血量減小可是客戶端沒有減小.解決辦法:
同步字段
在須要同步的字段前邊添加[SyncVar] 就能夠同步字段了 ,固然這個腳本要繼承NetworkBehavior
在這個字段同步後若是須要調用一個方法, 就能夠 [SyncVar(hook ="OnChangeHealth")]
這樣在字段同步後會自動調用OnChangeHealth方法, OnChangeHealth必需要帶有一個和字段類型同樣的參數, 這個參數就是字段同步以後的值.
在服務器調用過的方法若是須要客戶端再調用一遍的話須要在方法前邊添加[ClientRpc] 方法要以Rpc開頭 通常配合isLocalPlayer使用
OnStartServer() 當服務器啓動時自動調用
添加空物體添加組件
能夠經過修改這個屬性修改是隨機位置生成仍是按照順序生成