美文网首页
【Unity多人联机】Mirror视频学习笔记

【Unity多人联机】Mirror视频学习笔记

作者: iqxtreme | 来源:发表于2020-05-15 09:24 被阅读0次

以下视频均来自b站,无法停止奔跑的马https://space.bilibili.com/398331098

第一部分

https://www.bilibili.com/video/BV147411x7Q1?t=383

  • 02:16 NetworkManager,Telepothy做网络整体配置。
  • 04:52 NetworkIdentity,NetworkTransform,网络同步。

https://www.bilibili.com/video/BV1b7411x7h3

  • 04:38 继承NetworkBehaviour,以便捷实用Mirror功能。
  • 05:43 isLocalPlayer,判定是否本机用户。
  • 09:50 NetworkTransform.ClientAuthority,勾选,否则客户机主动产生的变化信息无法同步所有网络。

https://www.bilibili.com/video/BV1f7411x7yX

  • 05:35 重写OnStartServer(),相当于Start()。
  • 07:22 [ServerCallback],标识由服务器调用的方法。

https://www.bilibili.com/video/BV1f7411x7gF

  • 06:00 继承NetworkManager,重写OnServerAddPlayer(),以自定义角色创建过程(在有玩家加入服务器时)。
  • 07:26 NetworkServer.AddPlayerForConnect(),将新建立的角色加入指定连接(可能来自客户端)。
  • 10:21* NetworkManagerHUD,简易的界面。
  • 14:17* NetworkTransform.NetworkSyncInterval,调整同步频度,可降低不同步程度(可能有的物体不需要太频繁的同步)。
  • 14:29* NetworkManager.ServerTickRate,设置服务器更新速率,可降低不同步程度。

https://www.bilibili.com/video/BV1b7411s7Mr

  • 07:14 需要网络创建的同步对象要先注册到NetworkManager的注册对象列表中。
  • 09:19 通过Instantiate找到已注册对象,再用NetworkServer.Spawn()实例化此对象。
  • 11:37 重写NetworkManager.OnServerDisconnect(),在有玩家退出时做一些事情。
  • 12:17 NetworkServer.Destory(),销毁同步对象(由NetworkServer.Spawn创建的)。

第二部分

https://www.bilibili.com/video/BV127411j7zk

  • 01:33 [SyncVar(hook=someFunction)] 可以将对变量的修改,触发一个hook方法的调用。

https://www.bilibili.com/video/BV1B741177mT

  • 06:54 [Command] 修饰客户端调用,在服务器端执行的代码方法。

https://www.bilibili.com/video/BV157411A78s

  • 07:18 NetworkStartPosition组件,用于初始位置标识?

https://www.bilibili.com/video/BV1j7411A7w1

  • 03:30 OnStartLocalPlayer(),此方法在服务器端运行,其中设置修饰有[SyncVar]的变量,进而将数据同步到各个客户端。

https://www.bilibili.com/video/BV1j7411A7pd

  • 02:03 通过NetworkManager的PlayerSpawnMethod配置玩家出生方式,而挂载了NetworkStartPosition的组件即为玩家出生的位置。

https://www.bilibili.com/video/BV1L7411A7mh

  • 01:11 NetworkStartPosition的姿态会影响产生的玩家姿态。
  • 03:36 貌似[SyncVar]用于标识需要同步的变量。

第三部分

https://www.bilibili.com/video/BV127411V7pG

  • 3:41 [Command]修饰的方法要用Cmd开头,这类方法由客户端请求服务器执行。

https://www.bilibili.com/video/BV187411G7vQ

  • 03:07 [ClientRPC]修饰由服务器请求各个客户端上执行的方法,以Rpc开头。

https://www.bilibili.com/video/BV187411G7WY

  • 03:23 NetworkIdentity.ServerOnly,标识仅仅服务器端有效的对象。

https://www.bilibili.com/video/BV1x7411G71r

  • 06:35 [ServerCallback]修饰仅在服务器端执行的方法。

https://www.bilibili.com/video/BV167411g7i5

  • 04:37 [TargetRpc] 修饰指定目标机上执行的代码。
  • 06:43 NetworkBehaviour.connectionToClient保存着到客户端的连接信息。

https://www.bilibili.com/video/BV1u7411374T

  • 05:07 Mirror.Client.AddPlayer(),从客户端请求生成Player,重生用。

https://www.bilibili.com/video/BV137411378S

  • 07:02 在[ServerCallback]方法中可通过NetworkIdentity.connectionToClient判断对象由哪个客户端请求创建的。
  • 09:14 NetworkServer.Spawn()第二个参数指明生成的实例所隶属的对象。

总结

NetworkBehaviour

  • 需要网络操作的脚本最好继承自NetworkBehaviour。

需要同步的游戏对象

  • 通过NetworkIdentity和NetworkTransform构建需要同步的游戏对象(预制体)

同步对象的产生

  • 应该尽在服务器端代码执行同步对象产生的操作。
  • 先利用Instantiate产生同步对象预制体实例。
  • 再通过NetworkServer.Spawn(inst)将这个实例的产生同步到整个网络。

同步对象的销毁

  • 使用NetworkServer.Destroy(syncObj)销毁同步对象。

调用端与执行端

  • [ServerCallback] 仅仅在服务器端执行的代码。
  • [Command] Cmd开头,由某个客户端调用,服务器端执行。
  • [ClientRpc] 由服务器端调用,在所有客户端执行。
  • [TargetRpc] 由服务器调用,仅在指定客户端执行。

相关文章

网友评论

      本文标题:【Unity多人联机】Mirror视频学习笔记

      本文链接:https://www.haomeiwen.com/subject/hvtmghtx.html