Mirror 常用组件
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 常用组件相关推荐
- Unity 常用组件使用总结
Unity 常用组件使用总结 一.摄像机 Camera: 1.Clear Flag 清除标志:决定屏幕的那部分将被清除.当使用多个相机来描绘不同的游戏景象时,利用它是非常方便的. 2.Back gro ...
- JQuery EasyUI的常用组件
jQuery EasyUI 是一个基于 jQuery 的框架,集成了各种用户界面插件,该框架提供了创建网页所需的一切,帮助您轻松建立站点. 注:本次介绍的JQuery EasyUI版本为1.5版. 一 ...
- wdcp php5.3 pdo_mysql,WDCP常用组件(memcache、mysqli、PDO_MYSQL、mysql innodb、libmcrypt、php zip)的安装方法...
一般来说WDCP安装之后就可以正常使用了,不过对于一些朋友来说还无法满足,现在收集了有关WDCP常用组件,比如memcache.mysqli.PDO_MYSQL.mysql innodb.libmcr ...
- amazeui学习笔记--css(常用组件4)--关闭按钮Close
amazeui学习笔记--css(常用组件4)--关闭按钮Close 一.总结 1.关闭按钮基本用法:关闭按钮样式,可以结合其他不同组件使用.对 <a> 或者 <button> ...
- amqp协议_AMQP协议、模型及RabbitMQ常用组件
大家好,我是小T 今天咱们来介绍RabbitMQ的消息发送的原理 ^-^ RabbitMQ作为一款消息中间件,它的核心功能主要是消息的收发.消息收发的媒介是通过网络传输来实现的. RabbitMQ最底 ...
- HarmonyOS之常用组件RoundProgressBar的功能和使用
RoundProgressBar 继承自 ProgressBar,拥有 ProgressBar 的属性,在设置同样的属性时用法和 ProgressBar 一致,用于显示环形进度. RoundProgr ...
- HarmonyOS之常用组件TabList与Tab的功能和使用
一.什么是 Tablist 与 Tab ? Tablist 可以实现多个页签栏的切换,Tab 为某个页签. 子页签通常放在内容区上方,展示不同的分类. 页签名称应该简洁明了,清晰描述分类的内容. 二. ...
- HarmonyOS之常用组件TextField的功能和使用
一.支持的 XML 属性 TextField 的共有 XML 属性继承自:Text. Text 的自有 XML 属性,请参考我之前的博客:HarmonyOS之深入分析常用组件Text的功能和使用. T ...
- HarmonyOS之常用组件Button的功能和使用
一.Button 组件 Button 是一种常见的组件,点击可以触发对应的操作,通常由文本或图标组成,也可以由图标和文本共同组成. 文本按钮,如下所示: 图标按钮,如下所示: 图标和文本共同组成的按钮 ...
最新文章
- grep搜索当前目录和递归搜索子目录中文本文件的特定pattern
- App列表之圆角ListView源码
- iOS UICollectionView 使用
- C++Primer第五版——习题答案详解(九)
- 运营级IOS一键签名程序源码 支持app超级签名一键分发平台
- 开发人员指南 Googlemap API教程
- Java尖刀系列3:堆
- 自学python要多久-自学Python要学会需要多久?老男孩Python培训班
- stat,查看文件属性
- Winsock—I/O模型之事件选择模型(一)
- matlab生成chirp信号,chirp信号(chirp信号的产生)
- 电容式麦克风和动圈式麦克风的工作原理
- 炸场!通用人工智能最新突破:一个模型、一套权重通吃600+视觉文本和决策任务,DeepMind两年研究一朝公开...
- alot英文怎么读_alot of是什么意思
- echartsx轴数据过多,倾斜45度
- 双系统启动修复完整解决方案
- 信息系统规划方法-业务流程再造(BPR)
- namesilo如何使用BTC支付:
- 永恒之蓝 利用(复现)
- 另辟蹊径,独树一帜的写作方法