本文簡(jiǎn)單介紹如何使用Unity內(nèi)置網(wǎng)絡(luò)Unet實(shí)現(xiàn)多人聯(lián)機(jī).使用Unet進(jìn)行聯(lián)機(jī)是比較簡(jiǎn)單的,但是畫面同步時(shí)會(huì)有明顯的延遲
首先在場(chǎng)景中新建一個(gè)空物體,添加組件Network Manager 和Network ManagerHUD組件

*NetworkManager中有關(guān)SpawnInfo的屬性
PlayerPrefab=>客戶端加入時(shí)自動(dòng)生成的Prefab
AutoCreatePlayer=>自動(dòng)生成Prefab。
PlayerSpawnMethod=>Prefab的生成方法,兩個(gè)選項(xiàng)。使用這個(gè)方法首先要有指定的位置。(NetworkStartPosition)
Random=>隨機(jī)生成
創(chuàng)建角色預(yù)制體,添加組件Network Identity

*NetworkIdentity組件表明這個(gè)預(yù)設(shè)體是一個(gè)網(wǎng)絡(luò)對(duì)象
.
給角色添加移動(dòng)腳本PlayerController
將角色的預(yù)制體添加到NetWork Manager/Spawn Info中

構(gòu)建項(xiàng)目并運(yùn)行,打開(kāi)構(gòu)建的游戲,
點(diǎn)擊左上角的LAN Host

再打開(kāi)Unity,運(yùn)行程序,點(diǎn)擊LAN Client加入游戲

畫面中有兩個(gè)角色(重合),移動(dòng)角色會(huì)發(fā)現(xiàn)角色在同時(shí)移動(dòng)

要添加一個(gè)判斷條件,判斷當(dāng)前角色是否為本地角色
首先,加入U(xiǎn)nityEngine.Networking命名空間
using UnityEngine.Networking;
其次,將MonoBehaviour改為NetworkBehaviour

最后添加判斷條件
void Update()
{
if (!isLocalPlayer)
{
return;
}
playerMove();
}
再次構(gòu)建發(fā)布并運(yùn)行,兩個(gè)角色就可以分開(kāi)移動(dòng)了,但是還有個(gè)問(wèn)題:畫面不同步

在角色預(yù)制體中添加Network Transform

Network Send Rate 每秒的網(wǎng)絡(luò)更新數(shù)
Transform Sync Mode 可以更改同步的組件類型
再次構(gòu)建運(yùn)行,可以看到 畫面同步了。
