Unity3D多人联机——Unet初步了解

本文简单介绍如何使用Unity内置网络Unet实现多人联机.使用Unet进行联机是比较简单的,但是画面同步时会有明显的延迟

首先在场景中新建一个空物体,添加组件Network Manager 和Network ManagerHUD组件

添加组件

*NetworkManager中有关SpawnInfo的属性

PlayerPrefab=>客户端加入时自动生成的Prefab
AutoCreatePlayer=>自动生成Prefab。
PlayerSpawnMethod=>Prefab的生成方法,两个选项。使用这个方法首先要有指定的位置。(NetworkStartPosition)
Random=>随机生成

创建角色预制体,添加组件Network Identity

添加组件
*NetworkIdentity组件表明这个预设体是一个网络对象

.

给角色添加移动脚本PlayerController

将角色的预制体添加到NetWork Manager/Spawn Info中

配置预制体

构建项目并运行,打开构建的游戏,

点击左上角的LAN Host

打开本地客户端

再打开Unity,运行程序,点击LAN Client加入游戏

连接客户端

画面中有两个角色(重合),移动角色会发现角色在同时移动


Animation1.gif

要添加一个判断条件,判断当前角色是否为本地角色
首先,加入UnityEngine.Networking命名空间

using UnityEngine.Networking;

其次,将MonoBehaviour改为NetworkBehaviour


更改类

最后添加判断条件

void Update()
    {
        if (!isLocalPlayer)
        {
            return;
        }
        playerMove();
       
    }

再次构建发布并运行,两个角色就可以分开移动了,但是还有个问题:画面不同步

Animation2.gif

在角色预制体中添加Network Transform

添加组件

Network Send Rate 每秒的网络更新数
Transform Sync Mode 可以更改同步的组件类型

再次构建运行,可以看到 画面同步了。


Animation3.gif
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。