分類: unity |
有幾日,主程用.net的socket作網絡通訊的小demo,用了一個簡單的socket,兩個線程,一個接收線程,一個發送線程。 html
代碼大概這樣: 網絡
Connecto是封裝了.ne socket的一個單例。看起來沒有什麼問題,運行也正常。可是第二次運行的時候,unity編輯器就假死(未影響)了。開始覺得是mono支持的.net版本問題,最後發現是unity在關閉調試的時候程序的線程沒有關閉。應該是unity單線程中,多線程不沒控制。以前的socket還鏈接着的,第二次再次鏈接讓socket阻塞,致使unity假死。 多線程
解決方法: socket
只要在unity銷燬對象的時候,把線程kill就好了。固然是在OnDestroy()了。可是主程說好像kill不了,線程有保護什麼的(這裏反正我不懂-_-!!)。以後在OnDestroy()裏把以前的socket給斷開。
這樣就能夠了。 編輯器
不過有時候仍是會假死,不知道是多線程的問題仍是unity自己的問題,可是機率低了不少,基本比你電腦死機高一點。 this