Mirror 常用组件

Mirror 是 Unity 的一个高性能、轻量级的网络库,它能够帮助开发者快速搭建网络游戏和应用程序。Mirror 提供了多个网络组件,以下是其中五个常用组件的详细介绍。

NetworkManager

介绍

NetworkManager 组件负责管理网络连接,它可以启动服务器和客户端,并处理网络连接、断开、重连等操作。同时,NetworkManager 还提供了一些事件回调函数,例如 OnServerConnect、OnClientDisconnect 等,可以方便地处理网络事件。

方法

  • StartServer():启动服务器。

  • StartClient():启动客户端。

  • StopServer():停止服务器。

  • StopClient():停止客户端。

举例子

以下是几个常见的代码例子,演示了如何使用 NetworkManager 组件:

例子 1:启动服务器和客户端

using UnityEngine;
using Mirror;public class MyNetworkManager : NetworkManager
{public void StartServer(){base.StartServer();}public void StartClient(){base.StartClient();}public void StopServer(){base.StopServer();}public void StopClient(){base.StopClient();}
}

在这个例子中,我们创建了一个名为 MyNetworkManager 的类,并继承了 NetworkManager 组件。我们通过调用基类的 StartServer 和 StartClient 函数来启动服务器和客户端,通过调用基类的 StopServer 和 StopClient 函数来停止服务器和客户端。

NetworkIdentity

介绍

NetworkIdentity 组件用于标识网络游戏对象,它可以在网络中同步游戏对象的状态和属性。当一个游戏对象被标识为 NetworkIdentity 时,它会自动在服务器和客户端之间同步其位置、旋转、缩放、变量等属性。

方法

  • AssignClientAuthority(NetworkConnection conn):将网络对象的所有权分配给指定的客户端连接。

  • RemoveClientAuthority(NetworkConnection conn):从指定的客户端连接中移除网络对象的所有权。

举例子

以下是一个常见的例子,演示了如何使用 NetworkIdentity 组件:

例子:标识网络对象

using UnityEngine;
using Mirror;public class MyNetworkObject : NetworkBehaviour
{// 在网络中同步的变量[SyncVar]public int score;void Start(){// 检查是否是本地客户端if (isLocalPlayer){// 分配客户端所有权CmdAssignClientAuthority();}}[Command]void CmdAssignClientAuthority(){// 将网络对象的所有权分配给本地客户端if (connectionToClient != null){AssignClientAuthority(connectionToClient);}}
}

在这个例子中,我们创建了一个名为 MyNetworkObject 的类,并继承了 NetworkBehaviour 组件。我们使用 [SyncVar] 属性将 score 变量在网络中同步,并在 Start 函数中检查是否是本地客户端。如果是本地客户端,我们使用 CmdAssignClientAuthority 函数将网络对象的所有权分配给客户端。

NetworkBehaviour

介绍

NetworkBehaviour 组件用于处理网络消息,它可以在服务器和客户端之间同步游戏对象的状态和属性。当一个游戏对象被标识为 NetworkIdentity 时,它会自动在服务器和客户端之间同步其位置、旋转、缩放、变量等属性。

方法

  • Send<T>(T message, int channelId = Channels.DefaultReliable):向服务器或客户端发送网络消息。

  • [Command]:用于标记一个客户端调用的远程过程调用(RPC)函数。

  • [ClientRpc]:用于标记一个服务器调用的远程过程调用(RPC)函数。

举例子

以下是一个常见的例子,演示了如何使用 NetworkBehaviour 组件:

例子:同步游戏对象的位置和旋转

using UnityEngine;
using Mirror;public class MyNetworkObject : NetworkBehaviour
{// 在网络中同步的变量[SyncVar]public Vector3 position;[SyncVar]public Quaternion rotation;void Update(){if (isLocalPlayer){// 更新本地游戏对象的位置和旋转position = transform.position;rotation = transform.rotation;}else{// 同步远程游戏对象的位置和旋转transform.position = position;transform.rotation = rotation;}}
}

在这个例子中,我们创建了一个名为 MyNetworkObject 的类,并继承了 NetworkBehaviour 组件。我们使用 [SyncVar] 属性将 position 和 rotation 变量在网络中同步,并在 Update 函数中更新本地游戏对象的位置和旋转,以及同步远程游戏对象的位置和旋转。

NetworkTransform

介绍

NetworkTransform 组件用于同步游戏对象的位置、旋转和缩放等属性,它可以在服务器和客户端之间同步游戏对象的状态。当一个游戏对象被标识为 NetworkIdentity,并添加了 NetworkTransform 组件时,它会自动在服务器和客户端之间同步其位置、旋转、缩放等属性。

方法

  • SetDirtyBit(int dirtyBit):将指定的 dirty bit 设置为脏标志,以便在网络中同步。

举例子

以下是一个常见的例子,演示了如何使用 NetworkTransform 组件:

例子:同步游戏对象的位置和旋转

using UnityEngine;
using Mirror;public class MyNetworkObject : NetworkBehaviour
{// 在网络中同步的变量[SyncVar]public Vector3 position;[SyncVar]public Quaternion rotation;// 添加 NetworkTransform 组件[SerializeField]NetworkTransform networkTransform;void Update(){if (isLocalPlayer){// 更新本地游戏对象的位置和旋转position = transform.position;rotation = transform.rotation;// 设置 NetworkTransform 组件的脏标志networkTransform.SetDirtyBit(1 << 0);}}
}

在这个例子中,我们创建了一个名为 MyNetworkObject 的类,并继承了 NetworkBehaviour 组件。我们使用 [SyncVar] 属性将 position 和 rotation 变量在网络中同步,并添加了 NetworkTransform 组件来同步游戏对象的位置、旋转和缩放等属性。在 Update 函数中,我们更新本地游戏对象的位置和旋转,并使用 SetDirtyBit 函数将 NetworkTransform 组件的脏标志设置为 1。

Mirror 常用组件相关推荐

  1. Unity 常用组件使用总结

    Unity 常用组件使用总结 一.摄像机 Camera: 1.Clear Flag 清除标志:决定屏幕的那部分将被清除.当使用多个相机来描绘不同的游戏景象时,利用它是非常方便的. 2.Back gro ...

  2. JQuery EasyUI的常用组件

    jQuery EasyUI 是一个基于 jQuery 的框架,集成了各种用户界面插件,该框架提供了创建网页所需的一切,帮助您轻松建立站点. 注:本次介绍的JQuery EasyUI版本为1.5版. 一 ...

  3. wdcp php5.3 pdo_mysql,WDCP常用组件(memcache、mysqli、PDO_MYSQL、mysql innodb、libmcrypt、php zip)的安装方法...

    一般来说WDCP安装之后就可以正常使用了,不过对于一些朋友来说还无法满足,现在收集了有关WDCP常用组件,比如memcache.mysqli.PDO_MYSQL.mysql innodb.libmcr ...

  4. amazeui学习笔记--css(常用组件4)--关闭按钮Close

    amazeui学习笔记--css(常用组件4)--关闭按钮Close 一.总结 1.关闭按钮基本用法:关闭按钮样式,可以结合其他不同组件使用.对 <a> 或者 <button> ...

  5. amqp协议_AMQP协议、模型及RabbitMQ常用组件

    大家好,我是小T 今天咱们来介绍RabbitMQ的消息发送的原理 ^-^ RabbitMQ作为一款消息中间件,它的核心功能主要是消息的收发.消息收发的媒介是通过网络传输来实现的. RabbitMQ最底 ...

  6. HarmonyOS之常用组件RoundProgressBar的功能和使用

    RoundProgressBar 继承自 ProgressBar,拥有 ProgressBar 的属性,在设置同样的属性时用法和 ProgressBar 一致,用于显示环形进度. RoundProgr ...

  7. HarmonyOS之常用组件TabList与Tab的功能和使用

    一.什么是 Tablist 与 Tab ? Tablist 可以实现多个页签栏的切换,Tab 为某个页签. 子页签通常放在内容区上方,展示不同的分类. 页签名称应该简洁明了,清晰描述分类的内容. 二. ...

  8. HarmonyOS之常用组件TextField的功能和使用

    一.支持的 XML 属性 TextField 的共有 XML 属性继承自:Text. Text 的自有 XML 属性,请参考我之前的博客:HarmonyOS之深入分析常用组件Text的功能和使用. T ...

  9. HarmonyOS之常用组件Button的功能和使用

    一.Button 组件 Button 是一种常见的组件,点击可以触发对应的操作,通常由文本或图标组成,也可以由图标和文本共同组成. 文本按钮,如下所示: 图标按钮,如下所示: 图标和文本共同组成的按钮 ...

最新文章

  1. grep搜索当前目录和递归搜索子目录中文本文件的特定pattern
  2. App列表之圆角ListView源码
  3. iOS UICollectionView 使用
  4. C++Primer第五版——习题答案详解(九)
  5. 运营级IOS一键签名程序源码 支持app超级签名一键分发平台
  6. 开发人员指南 Googlemap API教程
  7. Java尖刀系列3:堆
  8. 自学python要多久-自学Python要学会需要多久?老男孩Python培训班
  9. stat,查看文件属性
  10. Winsock—I/O模型之事件选择模型(一)
  11. matlab生成chirp信号,chirp信号(chirp信号的产生)
  12. 电容式麦克风和动圈式麦克风的工作原理
  13. 炸场!通用人工智能最新突破:一个模型、一套权重通吃600+视觉文本和决策任务,DeepMind两年研究一朝公开...
  14. alot英文怎么读_alot of是什么意思
  15. echartsx轴数据过多,倾斜45度
  16. 双系统启动修复完整解决方案
  17. 信息系统规划方法-业务流程再造(BPR)
  18. namesilo如何使用BTC支付:
  19. 永恒之蓝 利用(复现)
  20. 另辟蹊径,独树一帜的写作方法

热门文章

  1. ZYNQ芯片AXI 协议和PL和PS接口互联
  2. Spring Boot 统一处理全局异常
  3. Twitter实时搜索系统EarlyBird
  4. python100例排列组合_Python列表list排列组合操作示例
  5. C++连接MySQL数据库(利用API)
  6. 前端ES6的语法整理
  7. Netty之握手和安全认证
  8. python作业《统计马丁.路德.金的《I have a dream》的英文全文中,26个英文字母的频率》
  9. rfid档案管理-基于RFID技术的智能档案管理系统—铨顺宏fuwit
  10. 华为服务器主机型号,查询服务器主机型号