当前位置: 首页 > 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组件上

相关文章:

  • 水晶杂谈3:生物群系大家族,噪声函数塑地形
  • 基于k2-icefall实践Matcha-TTS中文模型训练
  • 解决Docker网络与虚拟机桥接冲突的实践指南
  • VC++ 服务守护qt用户级UI进程
  • QEMU学习之路(10)— RISCV64 virt 使用Ubuntu启动
  • c++set和pair的使用
  • 小白的进阶之路系列之十六----人工智能从初步到精通pytorch综合运用的讲解第九部分
  • docker mysql启动后时间慢8小时问题
  • 24. 开发者常用工具:抓包,弱网模拟,元素检查
  • Tkinter快速入门指南
  • DataWhale-零基础络网爬虫技术(二er数据的解析与提取)
  • 粗浅理解:为什么左旋右旋的组合反而收旋转矩阵影响
  • ajax中get和post的区别
  • 5.基于神经网络的时间序列预测
  • Git 命令全景图:从 clone 到 merge 的完整流程解析
  • 【时时三省】(C语言基础)善于利用指针
  • 统计一个区间内的素数并求和
  • 3D Gaussian Splatting算法安装与实测
  • android 渲染流水线中的两个重要阶段:swapBuffers 和 DrawFrames
  • 大模型Text2SQL之在CentOS上使用yum安装与使用MySQL
  • 建设银行官网招聘网站/摘抄一篇新闻
  • 怎么做简易手机网站/百度安装免费下载
  • 北京网站制作很好 乐云践新/谷歌官网下载app
  • 宠物交易网站开发/线下课程seo
  • 青海网站建设公司哪家好/网站推广的方式有哪些
  • 编辑制作网页的基础是/优化人员是什么意思