赞
踩
Mirror是一个简单高效的开源的Unity多人游戏网络框架。
在这里按照油管dalao的教学流程,与官方文档学习常用的API及操作。
https://mirror-networking.gitbook.io/docs
Mirror在Unity商店中是免费的,因此直接加入自己的资源库并在导入即可:
导入后需要调整一下项目的.net版本:
Project Settings - Player - Other Settings - Configuration - Api Compatibility Level
至.NET 4.x
可能需要重启一下Unity,这样在ADD Component时才能看到相关组件。
一个场景需要一个物件做总的网络数据传输与管理:
在这个物件上挂载NetworkManager
,KcpTransport
,NetworkManagerHUD
。
前两个是网络管理与传输的核心,我们可以暂且称之为网络中枢。
最后一个用来帮助我们方便地管理多人游戏各个同步的场景中,
哪一个用户的场景是主机,(进行状态同步)
或者是没有玩家进行游玩的服务器,(进行云服务器帧同步)
或者是非主机的玩家场景。
BTW,同步的意思就是保证多人游戏的所有用户,能够在一致的场景中进行活动,
这里典型的分为状态同步和帧同步,可以额外百度了解一下。
这里我们用一个Cube当作玩家,
需要为之挂载上NetworkIdentity
:
只有挂载了NetworkIdentity
,网络中枢才能识别到这个物件,并对之进行同步。
接下来将Cube作为一个预制体保存,并在场景中删除,
后拖拽预制体到网络中枢的Player Prefab
插槽中,
以后它(玩家)的产生就完全依靠网络中枢在连接到主机后自动生成,
而不是在运行场景之前直接放进场景中:
现在完成的功能,就是每当一个用户连接到主机(当前默认是本机),
一个玩家预制体(Cube)就会被创建出来
打包出来一份游戏,并打开
在Unity中进入Play模式,并作为主机(服务端和客户端)运行:
将刚刚打包出来的作为客户端运行:
此时可以看到有多个Cube被创建出来:
客户端退出后,服务端的Cube也会自动少一个:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。