当前位置: 首页 > news >正文

Unity3d中使用Mirror进行自定义消息通信

一、服务端:

1.创建服务端脚本MyServer.cs 继承自NetworkManager类

using Mirror;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;public class MyServer : NetworkManager
{[Header("自定义按钮")]public Button btnStartServer;public Button btnStopServer;public Button btnSendServerMsg;public Text textContent;// Start is called before the first frame updatepublic override void Start(){btnStartServer.onClick.AddListener(() =>{StartServer();});btnStopServer.onClick.AddListener(() =>{StopServer();});btnSendServerMsg.onClick.AddListener(() =>{MyCustomMessage m = new MyCustomMessage(){text = "server msg"};NetworkServer.SendToAll(m);});}public override void OnStartServer(){base.OnStartServer();NetworkServer.RegisterHandler<MyCustomMessage>(OnServerReceiveCustomMessage);Debug.Log("OnStartServer");textContent.text += "OnStartServer\r\n";}public override void OnStopServer(){Debug.Log("OnStopServer");textContent.text += "OnStopServer\r\n";}public override void OnServerConnect(NetworkConnectionToClient conn){Debug.Log("OnServerConnect");textContent.text += "OnServerConnect\r\n";}public override void OnServerDisconnect(NetworkConnectionToClient conn){Debug.Log("OnServerDisconnect");textContent.text += "OnServerDisconnect\r\n";}private void OnServerReceiveCustomMessage(NetworkConnectionToClient arg1, MyCustomMessage arg2){textContent.text = DateTime.Now.ToString("HH:mm:ss") +": "+ arg2.text + "\r\n";}
}

2.创建空物体,添加MyServer、KcpTransport组件。如果不需要创建Player,可以去掉勾选MyServer

3.创建UI界面,将按钮等赋值到MyServer组件上

二、服务端

1.创建客户端脚本MyClient.cs 继承自NetworkManager类

using Mirror;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;public class MyClient : NetworkManager
{[Header("自定义按钮")]public InputField inputIp;public Button btnConnectServer;public Button btnDisonnectServer;public Button btnSendClientMsg;public Text textContent;// Start is called before the first frame updatepublic override void Start(){btnConnectServer.onClick.AddListener(() =>{networkAddress = inputIp.text;StartClient();            });btnDisonnectServer.onClick.AddListener(() =>{StopClient();});btnSendClientMsg.onClick.AddListener(() =>{MyCustomMessage m = new MyCustomMessage(){text = "client msg"};NetworkClient.Send(m);});NetworkClient.RegisterHandler<MyCustomMessage>(OnClientReceiveCustomMessage);}public override void OnStartClient(){textContent.text += "OnStartClient\r\n";}public override void OnStopClient(){textContent.text += "OnStopClient\r\n";}public override void OnClientConnect(){textContent.text += "OnClientConnect\r\n";}/// <summary>Called on clients when disconnected from a server.</summary>public override void OnClientDisconnect(){textContent.text += "OnClientDisconnect\r\n";}private void OnClientReceiveCustomMessage(MyCustomMessage obj){textContent.text = DateTime.Now.ToString("HH:mm:ss") + ": " + obj.text + "\r\n";}
}

2.创建空物体,添加MyClient、KcpTransport组件。如果不需要创建Player,可以去掉勾选MyServer

3.创建UI界面,将按钮等赋值到MyServer组件上

http://www.lqws.cn/news/454231.html

相关文章:

  • 解锁决策树:数据挖掘的智慧引擎
  • YOLO系列模型基础与实战(YOLO系列发展线)
  • YOLOv11改进 | RCS-OSA与C3k2融合架构技术详解
  • 容器技术技术入门与Docker环境部署
  • 在 CentOS 7.9 中 Node 18.20.2 安装指南
  • HTTP 请求方法与状态码
  • MySQL慢SQL优化全攻略:从诊断到调优
  • day30 导包
  • html和css实现文本打断换行、自动换行
  • postgresql DDL脚本
  • 电影感户外柔和光线人像街拍摄影后期Lr调色教程,手机滤镜PS+Lightroom预设下载!
  • 高防IP怎么选
  • 开源CMS vs 闭源CMS:二次开发究竟有何不同?
  • 工具:Autosar:DBC转ARXML
  • PLuTo 编译器示例17-20
  • 24. 开发者常用工具:抓包,弱网模拟,元素检查
  • TDengine 与开源可视化编程工具 Node-RED 集成
  • 基于微信小程序的美食点餐订餐系统
  • tkinter Text 组件学习指南
  • Python函数:全面教程
  • 【秒杀系统设计】
  • Logback 在java中的使用
  • VS2022 C#【自动化文件上传】AutoFileUpload 新需求 V13
  • 从“数据困境”到“数据生态”:DaaS重塑三甲医院医疗数据治理
  • android 渲染流水线中的两个重要阶段:swapBuffers 和 DrawFrames
  • Unity技能编辑器深度构建指南:打造专业级战斗系统
  • 项目开发中途遇到困难的解决方案
  • 跑步还是快速走,瘦身分享
  • 【unitrix】 3.4 类型级逻辑运算(bit.rs)
  • 广州AR公司诚推广州华锐互动​