今天开始为大家介绍一下unity和UE4的通信机制,如何实现两个PC端或者PC端与移动端的通信,包括Unity与Unity的通信,UE4与UE4的通信,UE4与Unity的通信,首先今天给大家介绍一下Unity与Unity之间的通信。
这里我主要使用的是Networking下的NetworkServe和NetworkClient建立服务器端和客户端。

服务器端using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.UI;
using System;public class MyNetworkManager : MonoBehaviour
{/// 要发送的信息public InputField send;/// 显示信息public Text info;/// 网络客户端private NetworkClient myClient;/// 用户信息分类private const short userMsg = 64;void Start (){info.text = "Start...";myClient = new NetworkClient ();}/// <summary>/// 建立服务器/// </summary>public void SetupServer (){if (!NetworkServer.active) {ShowMsg ("setup server");ServerRegisterHandler ();NetworkServer.Listen (10000);  //端口号,随便你自己定义if (NetworkServer.active) {ShowMsg ("Server setup ok.");}}}/// <summary>/// 停止服务器端/// </summary>public void ShutdownServer (){if (NetworkServer.active) {ServerUnregisterHandler ();NetworkServer.DisconnectAll ();NetworkServer.Shutdown ();if (!NetworkServer.active) {ShowMsg ("shut down server");}}}/// <summary>/// 服务器端有客户端连入事件/// </summary>/// <param name="netMsg">Net message.</param>private void OnServerConnected (NetworkMessage netMsg){ShowMsg ("One client connected to server");}/// <summary>/// 服务器端有客户端断开事件/// </summary>/// <param name="netMsg">Net message.</param>private void OnServerDisconnected (NetworkMessage netMsg){ShowMsg ("One client connected from server");}/// <summary>/// 服务器端错误事件/// </summary>/// <param name="netMsg">Net message.</param>private void OnServerError (NetworkMessage netMsg){ServerUnregisterHandler ();ShowMsg ("Server error");}/// <summary>/// 显示信息/// </summary>/// <param name="Msg">Message.</param>private void ShowMsg (string Msg){info.text = Msg + "\n\r" + info.text;//Debug.Log (Msg);}/// <summary>/// 服务器端向所有客户端发送信息/// </summary>public void ServerSend (){if (NetworkServer.active) {UserMsg um = new UserMsg ();um.message = send.text;if (NetworkServer.SendToAll (userMsg, um)) {ShowMsg ("Server send:" + send.text);}}}/// <summary>/// 服务器端收到信息事件/// </summary>/// <param name="netMsg">Net message.</param>private void ServerGet (NetworkMessage netMsg){UserMsg Msg = netMsg.ReadMessage<UserMsg> ();ShowMsg ("Server get:"+Msg.message);}/// <summary>/// 服务器端注册事件/// </summary>private void ServerRegisterHandler(){NetworkServer.RegisterHandler (MsgType.Connect, OnServerConnected);NetworkServer.RegisterHandler (MsgType.Disconnect, OnServerDisconnected);NetworkServer.RegisterHandler (MsgType.Error, OnServerError);NetworkServer.RegisterHandler (userMsg, ServerGet);}/// <summary>/// 服务器端注销事件/// </summary>private void ServerUnregisterHandler(){NetworkServer.UnregisterHandler (MsgType.Connect);NetworkServer.UnregisterHandler (MsgType.Disconnect);NetworkServer.UnregisterHandler (MsgType.Error);NetworkServer.UnregisterHandler (userMsg);}
}
客户端using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.UI;
using System;public class MyNetworkManager : MonoBehaviour
{// 服务器ip地址public InputField ip;   // 服务器端口public InputField port;//要发送的信息public InputField send;//显示信息public Text info;//网络客户端private NetworkClient myClient;//用户信息分类private const short userMsg = 64;void Start (){info.text = "Start...";myClient = new NetworkClient ();}//建立客户端public void SetupClient (){if (!myClient.isConnected) {ShowMsg ("setup client");ClientRegisterHandler ();myClient.Connect (ip.text, int.Parse (port.text));}}//停止客户端public void ShutdownClient (){if (myClient.isConnected) {ClientUnregisterHandler ();myClient.Disconnect ();//NetworkClient.Shutdown()使用后,无法再次连接。//This should be done when a client is no longer going to be used.//myClient.Shutdown ();}}// 客户端连接到服务器事件private void OnClientConnected (NetworkMessage netMsg){ShowMsg ("Client connected to server");}//客户端从服务器断开事件private void OnClientDisconnected (NetworkMessage netMsg){ShowMsg ("Client disconnected from server");}//客户端错误事件private void OnClientError (NetworkMessage netMsg){ClientUnregisterHandler ();ShowMsg ("Client error");}//显示信息private void ShowMsg (string Msg){info.text = Msg + "\n\r" + info.text;//Debug.Log (Msg);}// 客户端向服务器端发送信息public void ClientSend (){if (myClient.isConnected) {UserMsg um = new UserMsg ();um.message = send.text;if (myClient.Send (userMsg, um)) {ShowMsg ("Client send:" + send.text);}}}//客户端接收到服务器端信息事件private void ClientGet (NetworkMessage netMsg){UserMsg Msg = netMsg.ReadMessage<UserMsg> ();ShowMsg ("Client get:"+Msg.message);}//客户端注册事件private void ClientRegisterHandler(){myClient.RegisterHandler (MsgType.Connect, OnClientConnected); myClient.RegisterHandler (MsgType.Disconnect, OnClientDisconnected);myClient.RegisterHandler (MsgType.Error, OnClientError);myClient.RegisterHandler (userMsg, ClientGet);}//客户端注销事件private void ClientUnregisterHandler(){myClient.UnregisterHandler (MsgType.Connect);myClient.UnregisterHandler (MsgType.Disconnect);myClient.UnregisterHandler (MsgType.Error);myClient.UnregisterHandler (userMsg);}
}

这个示例只是简单的给大家实现了服务器和客户端的一个互传消息,在此基础上大家可以尽情的扩展。

Demo地址:https://download.csdn.net/download/sxx930923/10903377

第十一篇:Unity与UE4的通信机制(一):Unity与Unity通信相关推荐

  1. 专业课程设计之客户与服务器程序的同步与通信机制的设计(二)TCP通信

    源码下载地址为: http://download.csdn.net/detail/qq78442761/9856423 ---------------------------------------- ...

  2. ROS通信机制(一)--话题通信基本操作

    话题通信 话题通信是基于发布订阅模式的,即一个节点发布消息,另一个节点订阅该消息. 流程:编写发布方实现–编写订阅方实现–(用python实现时,为python文件编写可执行权限)–编写配置文件–编译 ...

  3. linux通信机制总结

    目录 1. Linux通信机制分类简介 2. Inter-Process Communication (IPC) mechanisms: 进程间通信机制0x1: 信号量(Signals)0x2: 管道 ...

  4. linux kernel and user space通信机制,Linux内核空间与用户空间通信机制地研究.doc

    实用文案 标准文档 Linux内核空间与用户空间通信机制的研究 Linux kernel space and user space communication mechanism 摘 要 Linux ...

  5. 专业课程设计之客户与服务器程序的同步与通信机制的设计(一)项目介绍

    源码下载地址为: http://download.csdn.net/detail/qq78442761/9856423 ---------------------------------------- ...

  6. linux 进程通信机制,LINUX内核进程高效通信机制研究

    摘要:进程间的通信是多任务.多用户操作系统必须考虑的重大问题,Linux继承了Unix的基本设计思想,其安全性和稳定性得到了人们的认可,但随着其应用领域的不断拓展,其通信机制已经不能满足用户的需求.本 ...

  7. ROS通信机制——发布/订阅者模型

    目录 发布/订阅者模型 (一)发布者 (二)订阅者 (三)综合 参考资料 ROS (Robot Operating System),即机器人操作系统,是为了加快机器人的开发效率,提高机器人软件代码的复 ...

  8. unity 线程断点时卡机_Compute Shader在Unity和UE4中的应用

    该文档为学习文档,如有错误欢迎指正. 1. D3D11 Compute Shader概述 Compute Shader 是一个通用计算 Stage.它利用了GPU的并行处理器,实现大量线程并发执行.它 ...

  9. CCNA-第十一篇-VTP+STP(上)

    CCNA-第十一篇-VTP+STP(上) VTP:VLAN中继协议(VLAN Trunking protocol )利用第2层中继帧,在一组交换机之间进行VLAN通信 STP:生成树,交换机的冗余协议 ...

最新文章

  1. 【Linux】ubuntu或linux网卡配置/etc/network/interfaces
  2. 2017-2018-1 20155338 《信息安全系统设计基础》 第四周学习总结
  3. 决胜B端第2版(4):需求分析的十三要素五步法
  4. java 工作6年 面试_为什么不想搞Java了,6年经验去面试5分钟结束,现在Java面试为何这么难...
  5. 第五章:配置使用FastJson返回Json视图
  6. wireshark过滤使用
  7. pte模拟考试_PTE猩际PC版-PTE猩际电脑版下载 v5.6.1--PC6电脑版
  8. LKCOS:基于程序移植的COS系统
  9. Android presentation
  10. [ThinkPHP]打开页面追踪调试
  11. 冒险岛062mysql_冒险岛单机版062
  12. Android权限管理原理
  13. win10系统VirtualBox虚拟机安装
  14. 杭州电子科技大学研究生计算机科学与技术,杭州电子科技大学-硕士研究生-计算机学院 2018级计算机科学与技术(中日合作)培养方案...
  15. python中re.compile()用法详解
  16. Python数据存取详解
  17. matlab fisher z变换,关于GCA统计
  18. 把Colab运行后生成的文件保存到Google drive
  19. 此应用 DCloud APPID 非当前账号所有,请联系应用所有者(即此Appid的创建者)设置你的账号为协作者(在https://dev.dcloud.net.cn操作),或重新生成 APPID 后
  20. Apk脱壳圣战之—如何脱掉“梆梆加固”的保护壳

热门文章

  1. seacms_v6.4(海洋cms)前台RCE 分析
  2. 如何利用知识变现,有哪些渠道或者方法?
  3. oracle性能优化的好书,Oracle性能优化绝版好书:高级OWI与ORACLE性能调整
  4. OpenCV计算机视觉编程记录(03)---------在图像右下角插入自己的名字logo
  5. 基于Vue2实现的仿手机QQapp(支持对话功能,滑动删除....)—— 聊聊开发过程中踩到的一些坑与解决方案,以及个人感悟...
  6. data类型的Url格式:把小数据直接嵌入到Url中
  7. 程序猿每日经典英语必读
  8. 面试被问到微信钉钉的群人数为什么要设上限,懵了。。
  9. c语言实验原理或流程图,实验2循环结构程序设计实验报告.doc
  10. 很奇葩的问题 your property named %s cannot find the corresponding database column name