本文简单介绍如何使用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