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.pswp.cn/bicheng/85566.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/85566.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/85566.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Odoo 18 固定資產管理自動化指南

如何在Odoo 18中實現資產管理自動化 1. 創建資產模型實現資產管理自動化 使用 Odoo 18 的會計模塊&#xff0c;資產的創建和確認可輕松實現自動化。這將使資產管理變得更加簡單高效。使用資產自動化功能&#xff0c;一旦驗證相關產品的供應商賬單&#xff0c;Odoo將自動生成并…

如何輕松地將音樂從 iPhone 傳輸到 Mac?

想把音樂從 iPhone 傳輸到 Mac 嗎&#xff1f;這很常見&#xff0c;無論你是想更換設備、備份收藏&#xff0c;還是只想在更大的屏幕上欣賞喜愛的歌曲。幸運的是&#xff0c;有 6 種有效的方法可以完成這項工作&#xff0c;具體取決于你喜歡使用的工具。讓我們開始吧。 第 1 部…

人工智能——解讀AI智慧課堂系統解決方案【附全文閱讀】

該文檔是 AI 智慧課堂系統解決方案,聚焦教育信息化需求,通過 AI 技術與教學深度融合,解決傳統課堂考勤效率低、資源管理難、分析不精準等問題。 方案以課堂為核心,構建 “背景分析 - 方案設計 - 優勢價值” 框架,技術架構涵蓋教師攝像機、學生抓拍機、智能錄播主機等設備,…

使用Nginx的RTMP模塊進行直播流轉HLS時,處理和預防`.ts`文件過多

當使用Nginx的RTMP模塊進行直播流轉HLS時,如果長時間運行或處理大量流媒體內容,可能會遇到.ts文件累積過多的問題。這不僅會占用大量的磁盤空間,還可能影響系統性能。以下是一些處理和預防.ts文件過多的方法: 1. 配置HLS清理 Nginx RTMP模塊允許配置HLS片段的過期時間,這…

結構體解決冒泡排序

設計英雄的結構體 //1、設計結構體 struct Hero {string name;//姓名int age;//年齡string sex;//性別 };創建英雄的數組 //2、創建數組存放英雄 struct Hero Array[5] {{"劉備", 34 ,"男"},{"關羽", 45 ,"男"},{"張飛",…

spring-webmvc @RequestParam 典型用法

典型用法 基本使用 HTTP請求參數綁定到方法參數 GetMapping("/users") public String getUsers(RequestParam String name) {return "Hello, " name; }請求&#xff1a;/users?nameJohn 輸出&#xff1a;Hello, John-----GetMapping("/filter&qu…

AntDesignPro前后端權限按鈕系統實現

目錄 Ant Design Pro 后端接口權限按鈕系統 系統架構圖 前端實現 權限按鈕組件 (AuthButton.tsx) 權限鉤子 (useAccess.ts) 權限服務 (permission.ts) 產品列表頁面 (ProductList.tsx) 后端接口設計 (Node.js Express 示例) 權限接口控制器 (permissionController.js…

RAG工程落地:處理文檔中表格數據

在 RAG&#xff08;Retrieval-Augmented Generation&#xff09;工程落地過程中&#xff0c;處理文檔中的表格數據 是一個非常重要但復雜的問題&#xff0c;特別是針對技術文檔、報告、論文等結構化強的資料。比如PDF文檔里的表格數據&#xff0c;如下&#xff1a; RAG處理表格…

大模型在肺癌預測及個性化診療方案中的應用研究

目錄 一、引言 1.1 研究背景與意義 1.2 研究目的與創新點 1.3 國內外研究現狀 二、大模型預測肺癌的原理與方法 2.1 大模型概述 2.2 數據收集與預處理 2.3 特征工程 2.4 模型訓練與優化 三、術前預測與方案制定 3.1 病情評估 3.1.1 腫瘤大小、位置及分期預測 3.1.…

如何高效分享WordPress博客文章

在當今信息過載的時代&#xff0c;寫好一篇優秀的 WordPress 博客文章只是起點&#xff0c;如何有效地分享給更多讀者才是成功的關鍵所在。對于新手用戶而言&#xff0c;選擇合適的工具和平臺尤為重要。現在許多服務器提供商支持一鍵安裝WordPress功能&#xff0c;比如 Hosteas…

以孝治家有機農業生態文明考察組赴邯鄲心田農場考察學習

按照2025年中共中央、國務院印發了關于《鄉村全面振興規劃&#xff08;2024—2027年&#xff09;》的戰略部署。根據《鄉村全面振興規劃》提出的“堅持人與自然和諧共生。牢固樹立和踐行綠水青山就是金山銀山的理念&#xff0c;落實節約優先、保護優先、自然恢復為主的方針&…

解決el-input無法輸入的問題 vue2+element el-input

問題描述: 在el-dialog中el-form組件來做表單提交 中文輸入模式: 在初次輸入的時候能輸入內容 但是再次輸入無法更改內容 英文輸入模式: 只能輸入一個英文 很多文章都是說 是雙向綁定的問題 但是我仔細看了 變量的雙向綁定確實沒毛病 直到我發現了是因為我el-input中的圖…

16_集成學習

描述 集成學習&#xff08;Ensemble Learning&#xff09;是一種通過結合多個模型的預測結果來提高整體性能的技術。集成學習的核心思想是通過多個弱學習器的組合&#xff0c;可以構建一個強學習器。 sklearn中常見的集成學習算法&#xff1a; Bagging&#xff1a;通過自助采…

學習STC51單片機43(芯片為STC89C52RCRC)智能小車9(語音識別小車)

每日一言 不必與他人比較速度&#xff0c;你走的每一步都在書寫自己的傳奇。 案例&#xff1a;語音識別小車 這個是最后一個功能了&#xff0c;其實就是用語音功能讓小車自己切換各種模式&#xff0c;當然了我們需要先學習一下語音模塊 硬件&#xff1a;SU-03T 這個叫做非特定…

Android 中 解析 XML 字符串的幾種方式

在 Android 開發中&#xff0c;解析 XML 文件有多種方式&#xff0c;每種方式都有其特點和適用場景。常見的 XML 解析方式有 DOM 解析、SAX 解析 和 XmlPullParser 解析。 1、DOM 解析 DOM&#xff08;Document Object Model&#xff09;解析是一種基于樹結構的解析方式&#…

云端算力革命:川翔云電腦如何重新定義創作自由

在設計與科技深度融合的時代&#xff0c;高性能硬件的桎梏正成為創意釋放的最大障礙。川翔云電腦以云端算力為支點&#xff0c;通過彈性算力、高效存儲、多端接入三大核心優勢&#xff0c;讓頂級 GPU 資源觸手可及。 一、核心優勢&#xff1a;突破物理極限的云端工作站 彈性算…

1.容器技術與docker環境部署

一&#xff1a;docker概述 因為 Docker 輕便、快速的特性&#xff0c;可以使應用達到快速迭代的目的。每次小的變更&#xff0c;馬上就可以看到效果&#xff0c;而不用將若干個小變更積攢到一定程度再變更。每次變更一小部分其實是一種非常安全的方式&#xff0c;在開發環境中…

關于 RSA:RSA 加密算法過程

RSA 是一種非對稱加密算法&#xff0c;用“公鑰”加密&#xff0c;用“私鑰”解密&#xff0c;保證數據傳輸安全。 比喻理解&#xff1a;鎖和鑰匙 想象一下&#xff1a; 公鑰是“上鎖的鎖”&#xff0c;別人可以用它鎖住箱子&#xff08;加密&#xff09;&#xff0c;但打不開…

SM3算法C語言實現(無第三方庫,帶測試)

一、SM3算法介紹 SM3算法是中國國家密碼管理局&#xff08;OSCCA&#xff09;于2010年發布的商用密碼散列函數標準&#xff0c;屬于我國自主設計的密碼算法體系之一 &#xff0c;標準文檔下載地址為&#xff1a;SM3密碼雜湊算法 。SM3算法輸出長度為256位&#xff08;32字節&a…

搜索二叉數(c++)

前言 在學習數據結構的時候我們學習過二叉樹&#xff0c;那啥是搜索二叉樹呢&#xff1f;我們知道單純的二叉樹沒有增刪查改的實際意義&#xff0c;因為沒有任何限制條件的二叉樹其實用處很局限。但是堆就不一樣了&#xff0c;他就是一個二叉樹加上了大小堆的限制條件&#xf…