Unity3D多人聯(lián)機(jī)——Unet初步了解

本文簡(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中

配置預(yù)制體

構(gòu)建項(xiàng)目并運(yùn)行,打開(kāi)構(gòu)建的游戲,

點(diǎn)擊左上角的LAN Host

打開(kāi)本地客戶端

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

連接客戶端

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


Animation1.gif

要添加一個(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)題:畫面不同步

Animation2.gif

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

添加組件

Network Send Rate 每秒的網(wǎng)絡(luò)更新數(shù)
Transform Sync Mode 可以更改同步的組件類型

再次構(gòu)建運(yùn)行,可以看到 畫面同步了。


Animation3.gif
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容