2017-10-10 162 views
0

我創建了一個在我的應用程序中使用的網絡api。編譯unity項目並在獨立的Windows播放器中運行時,我收到以下例外,這些例外會阻止我的應用程序發送/接收udp數據包。Unity 5.6.3p2中支持SocketAsyncEventArgs

NotSupportedException: Operation is not supported. 
    at System.Net.Sockets.SocketAsyncEventArgs.DoOperation 
(SocketAsyncOperation operation, System.Net.Sockets.Socket socket) [0x00000] 
in <filename unknown>:0 
    at System.Net.Sockets.Socket.ReceiveFromAsync 
(System.Net.Sockets.SocketAsyncEventArgs e) [0x00000] in <filename 
unknown>:0 
    at DivergentNetwork.DnlUdpClient.BeginReceive() [0x00000] in <filename 
unknown>:0 
    at DivergentNetwork.DnlUdpClient.Start() [0x00000] in <filename 
unknown>:0 
    at UdpClient.Start() [0x00000] in <filename unknown>:0 

我在想這是與獨立播放器有關的事情,但我無法弄清楚它到底是什麼。我知道這一點,因爲我可以在Unity Editor中成功運行應用程序而不會出錯。

如果SAEA類原來不支持Unity,那麼最佳選擇是什麼?

回答

1

您需要將兼容級別更改爲.NET 2.0

轉至文件 - >構建設置然後選擇您的平臺。點擊播放器設置。前往其他設置在右側。在API兼容級別下拉菜單中,將其更改爲.NET 2.0而不是.NET 2.0子集

+0

那麼修好了!你能解釋爲什麼玩家瞄準2.0子集而不是2.0? –

+0

它提供縮小的版本大小和速度啓動時間。這就是Unity將它用作默認設置的原因。他們也是這樣做的,因爲在Unity的遊戲中只有很少的人使用原始套接字。他們期望大多數人使用他們的網絡API,因此在這種情況下,使用默認設置可以減少應用程序大小並增加啓動時間。 – Programmer

+0

哦,很高興知道。謝謝! –