关于unity2019局域网联机
由于unity2019已经废除了NetWorkManage组件
因此我使用了unity资源商店中mirror组件。
- 首先在资源商店中下载Mirror组件,该组件免费使用。然后import导入到unity中
- 在unity中创建一个空物体,挂上一个叫NetWorkManage的组件,并重复名为NetWorkManage.改组件中PlayerPrefab最为关键
- 在NetWorkManage中挂上一个叫NetWorkHub的组件,该组件可以自动生成一个GUI组件。
- 此时在文件中点击打包。然后以小窗口打开,在unity中运行程序,并启动服务器。再打开刚刚发布的游戏,并直接默认连接本地服务器。然后就能连上了,虽然此时并不能看出任何不同。
- 为了能够看出变化。简单的创建一个Player,并加上动画控制器和人物移动等脚本,然后再将Player做成一个预制体,然而默认的预制体是不能起作用的。我们需要在Player上挂上一个叫NetWorkIdentity的组件。然后再做成预制体,并挂在NetWorkManage中的PlayerPrefab中。然后再打包。
- 此时再次运行游戏,然后连接上,你会发现此时已经可以看到另一个玩家的存在了,但此时,我们来操作角色移动,跳跃等。会发现两个角色同步执行相同的操作而且服务器和客服端并没有同步上。
- 首先我们来解决同步操作的问题。此时需要在角色控制的脚本中引入Mirror命名空间然后让此类继承NetWorkBehavior类。然后在Start方法中加入
if(!isLocalPlayer)return;
此行代码的意思:如果该角色不是本地的角色那么就返回,不执行下面的程序。就可以避免操作不是本地的角色。
8. 此时再打包运行游戏并连上。会发现,再次操作角色时,不会再出现两个角色同时执行相同的操作了,但是此时还是不能够同步服务器和客服端。
9. 为了能够同步。在NetWorkManage中挂上一个叫NetWorkTransform的组件,然后再次打包运行游戏,联机上,会发现此时在服务器上操作角色,在客户端上能够进行同步。但是在客户端上操作,服务段不能同步。
10. 为了解决上述问题,在NetWorkTransform组件上勾选。
11. 在OnStartLocalPlayer方法中可以重写加载预制体等,预处理操作。