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

【Unity多人联机】Mirror自学笔记

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

Mirror是什么

  • 看mirror官网或者其仓库中的说明进行了解。

如何学习Mirror

  • 仓库的doc文件夹里有相当详细的对Mirror的功能特色介绍。

https://gitee.com/geo/Mirror/blob/master/doc/index.md

  • 在本机克隆Mirror的GIT仓库(github慢,就用gitee的镜像),或者直接从Unity商店下载。
  • 将Mirror置入Unity项目后,查看Example(从Basic看起)。

Mirror/Examples/

  • 阅读案例中的README.md(如果有的话)。
  • 用VS或VSCode等代码编辑器打开案例代码,利用代码提示功能了解Mirror的api及修饰符的作用(Mirror做了很详细的注解)。
通过代码提示学习mirror

(英文没问题的话,以上的学习方法应该足够将mirror学习到应用程度了。以下会将我学习mirror时的重点记录下来,仅针对本人。)

Mirror官方文档浏览

Mirror功能特性简介。

https://gitee.com/geo/Mirror/blob/master/doc/index.md

支持的几种传输协议介绍。

https://gitee.com/geo/Mirror/blob/master/doc/Transports/index.md

验证

https://gitee.com/geo/Mirror/blob/master/doc/Components/Authenticators/index.md

  • 一个简易的基于用户名密码的验证组件。

https://gitee.com/geo/Mirror/blob/master/doc/Components/Authenticators/Basic.md

客户端服务端交互事件

  • 了解此信息有助于自定义联机细节。

https://www.jianshu.com/p/ad63f6f1e4e6

笔记

极其重要的组件

  • NetworkManager
  • NetworkBehaviour

https://gitee.com/geo/Mirror/blob/master/doc/Guides/NetworkBehaviour.md

  • NetworkIdentity,此组件似乎最为核心,很多网络事件均由此组件触发。

服务器端及客户端均有效

[SyncVar(hook=nameof(FunctionExecOnClient))]

  • 用来修饰一个变量,此变量由服务器变更,同步到各个客户端,客户端可以添加hook以响应变量的变更。
  • hook的原型为 function(oldValue, newValue)

仅服务器端有效

NetworkBehaviour.OnStartServer()

  • 游戏对象在服务端准备就绪后调用。

NetworkBehaviour.connectionToClient

  • 从服务器端获取客户端的信息。

[ServerCallback]

  • 修饰仅在服务器端执行的方法。

仅客户端有效

NetworkBehaviour.OnStartClient()

  • 当一个网络对象在服务器端网络就绪后,它在各个客户端的同步对象上都会调用此方法。

NetworkBehaviour.OnStartLocalPlayer()

  • 类似OnStartClient(),但仅在属于本机的同步对象上调用此方法。

网络启动过程

  • [Client]NetworkManager.OnStartClient()
  • [Client]NetworkManager.OnClientConnect(conn)
  • [Client]NetworkBehaviour.OnStartClient() 目前所有的连接都被调用一次
  • [Client]NetworkBehaviour.OnStartAuthority() 仅本地连接
  • [Client]NetworkBehaviour.OnStartLocalPlayer() 进本地连接
  • [Client]NetworkBehaviour.SyncVar

断开时

  • [Client]NetworkManager.OnStopClient()

未整理记录

客户端启动过程

  • [Client&Local]NetworkManager.StartClient(),可以向服务器发起连接请求。
  • [Client&Local]NetworkManager.OnStartClient(),在连接成功后被调用。
  • [Client&Local]NetworkManager.OnClientAuthenticated(),被授权后被调用。
  • [Client&Local]NetworkManager.OnClientConnect(conn),成功授权后调用。
  • [Client&Owner]NetworkBehaviour.OnStartAuthority(),本机为同步对象拥有者时调用。
  • [Client&All]NetworkBehaviour.OnStartClient(),任何同步对象初次到达任何客户端,先调用此方法。
  • [Client&Owner]NetworkBehaviour.OnStartLocalPlayer(),本机为同步对象拥有者时调用。

调试

  • 可以多开的脚本(mac)
    i=8; while (($i>0)); do open -n /Users/traceqxr/DEVs/LABs/Unity/UnityLab/Builds/MirrorNetworkingLab.app; ((i=$i-1)); sleep 0.1; done;

相关文章

网友评论

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

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