臨沂購買模板建站網頁首頁設計圖片
因為需要用到unity和其他的程序交互,其他程序可以提供Udp消息,因此找了合適的相互連接方法。這里直接上代碼。
工具類:
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using UnityEngine;
using UnityEngine.Video;public class UdpManager
{public static string m_receivedMessage;static IPEndPoint m_IPEndPoint;static UdpClient m_udpClient;public static void InitializeUdpClient(){m_IPEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8080);m_udpClient = new UdpClient(m_IPEndPoint);UdpModel s = new UdpModel(m_udpClient, m_IPEndPoint);m_udpClient.BeginReceive(EndReceive, s);Debug.Log("服務器啟動");}//結束得到的信息private static void EndReceive(IAsyncResult ar){try{UdpModel m_UdpModel = ar.AsyncState as UdpModel;if (m_UdpModel != null){UdpClient udpClient = m_UdpModel.m_udpclient;IPEndPoint ip = m_UdpModel.m_ip;Byte[] receiveBytes = udpClient.EndReceive(ar, ref ip);string msg = Encoding.UTF8.GetString(receiveBytes);m_receivedMessage = msg;udpClient.BeginReceive(EndReceive, m_UdpModel); //開始獲取}}catch (Exception ex){//處理異常}}//udp模型private class UdpModel{public UdpClient m_udpclient = null;public IPEndPoint m_ip;public UdpModel(UdpClient udpclient, IPEndPoint ip){this.m_udpclient = udpclient;this.m_ip = ip;}}//關閉public static void Close(){if (m_udpClient != null){m_udpClient.Close();m_udpClient = null;}}/// <summary>/// 發(fā)送數據/// </summary>/// <param name="obj"></param>public static void SendMessage(string message){UdpClient myUdpClient = new UdpClient();IPEndPoint endpoint;//當前服務器ip和端口號myUdpClient = new UdpClient(new IPEndPoint(IPAddress.Any, 8800));//要發(fā)送給的地址和端口號,255.255.255.255表示在這個局域網的所有ipendpoint = new IPEndPoint(IPAddress.Parse("192.168.31.174"), 1180);byte[] bytes = Encoding.UTF8.GetBytes(message);try{myUdpClient.Send(bytes, bytes.Length, endpoint);myUdpClient.Close();}catch (Exception err){Console.Write(err.Message, "發(fā)送失敗");}finally{myUdpClient.Close();}}
}
需要掛載運行的腳本:
using System.Collections.Generic;
using UnityEngine.UI;
using UnityEngine;
using UnityEngine.Video;/// <summary>
/// 服務接收生成
/// </summary>
public class ServerControl : MonoBehaviour
{void Start(){UdpManager.InitializeUdpClient();//part1Root.SetActive(true);//part2Root.SetActive(false);}void Update(){if (UdpManager.m_receivedMessage != null){string[] array = UdpManager.m_receivedMessage.Split(',');Debug.Log(UdpManager.m_receivedMessage);UdpManager.m_receivedMessage = null;}}private void OnDestroy(){UdpManager.Close();}
}
使用方法很簡單,把ServerControl腳本掛載在一個物體上,直接運行即可,接受信息的方法和發(fā)送的方法都在兩個腳本里。