Unity3D中程序后台運行,我原本認為當Application.runInBackground=false時,Socket保持連接,但是不接受數據,經過測試並非如此,當Application.runInBackground=false時,同樣可以接受來自Socket發送的消息。下面是我測試的代碼:
UnitySocket clientSocket; string message = ""; // Use this for initialization void Start () { XmlHelper helper = new XmlHelper(); helper.LoadData(Application.dataPath+"/"+"Config.xml"); clientSocket=new UnitySocket(); clientSocket.OnDataByteIn += new UnitySocket.delDataByteIn(clientSocket_OnDataByteIn); } void clientSocket_OnDataByteIn(string data) { Debug.Log("Unity3d Rev:"+data); message = data; if (data == "aaa") { Application.runInBackground = false; } else if (data == "bbb") { Application.runInBackground = true; } } // Update is called once per frame void Update () { } void OnGUI() { GUI.Label(new Rect(0,0,200,30),message); }
測試結果:
Unity3d默認設置runInBackground=false開啟Unity3D 給socket發送數據,unity3d的OnGUI沒顯示任何內容,但是Socket是有數據產生的。只是OnGUI暫時停止了工作,
當我發送bbb到應用程序時:
GUI有內容顯示了:
說明后台還是可以處理數據的。