开启一个线程做网络连接,和接收数据, 用event进行广播
using UnityEngine; using System; using System.Threading; using System.Net; using System.Net.Sockets; using System.Collections; using System.Collections.Generic; using System.Linq; public class NetComponent: MonoBehaviour { public static bool enable = true; Thread oThread; public static NetComponent instance { get; private set; } public List<string> bytelist = new List<string>(); public event Action<String> handler; private GameNet gamenet; protected GameObject rootObject; void OnEnable(){ instance = this; } void Awake(){ instance = this; } void Start(){ oThread = new Thread(new ThreadStart(NetComponent.instance.Beta)); oThread.Start(); } public static void SendMsg(string msg){ if(NetComponent.instance.gamenet != null){ NetComponent.instance.gamenet.send(msg); } } void Update(){ } void OnDestory(){ NetComponent.enable = false; oThread.Abort(); } public void Beta() { gamenet = new GameNet(); gamenet.start(); gamenet.send("1"); while(true){ if(NetComponent.enable == false){ break; } try{ string v = gamenet.conrecv(); bytelist.Add(v); } catch(SocketException e){ print(e.Message); break; } if(bytelist.Count > 0 && handler != null){ print ( string.Join(",", bytelist.ToArray()) ); bytelist.Clear(); } } gamenet.close(); Thread.CurrentThread.Abort(); } };