资源下载地址
局域网联机插件 Mirror:Mirror | 网络 | Unity Asset Store
本地客户端测试多人游戏(不用打包)插件 : ParrelSync
Mirror官方文档:General - Mirror (gitbook.io)
Mirror使用
前置准备
- 导入Mirror Package
- 创建空物体,添加
Network Manager
,Network Manager HUD
以及KCP Transport
(也可以选择其他网络连接方式) - 导入
ParrelSync
, 并为其clone当前项目,在此之后clone后的项目能同步你在本项目的所有修改
演示场景
点击开始之后会看到如下界面,需要其中一台电脑作为Host,其他玩家点击Client就可以直接连接
Mirror演示场景连接成功效果:
同步
首先需要注意的事情:
- 在你需要用到联网功能的脚本中都要添加
use Mirror
来使用相应Api,并且继承自NetWorkBehavior
而不是MonoBehavior
- 在涉及到玩家输入时,首先先要进行
isLocalPlayer
的判断 - 如果游戏玩家有
Prefab
,需要在prefab
添加NetworkIdentity
组件并将其拖入到NetworkManager
组件的PlayerPrefab
中
服务端与客户端通信
概念含义
Network Identity
该组件控制着游戏物体在网络中的独特ID,他的 Server Only
选项表示是否确保物体只生成在服务端。
注意:Mirror不支持嵌套的
Network Identity
,确保父物体是唯一一个具有该组件的物体,子物体通过GetComponentInParent
去查找
在每一个运行过程中生成的预制体都需要添加该组件。
Network Authority
Authority(权限)决定着谁拥有并控制着这个物体,默认情况下服务器拥有所有物体的权限
但有时候我们需要客户端拥有权限,比如玩家输入,我们有以下方法将权限给到客户端:
-
NetworkServer.Spawn
: 在创建物体时给出权限 -
NetworkServer.AddPlayerForConnection
,生成玩家物体时自动添加权限GameObject go = Instantiate(prefab); NetworkServer.Spawn(go, connectionToClient);
-
AssignClientAuthority
: 在任何时候添加权限