如何在Unity3d中使用SignalR?

25

我有理由在Unity中使用SignalR,我决定使用NuGet的Microsoft.AspNetCore.SignalR.Client。

我尝试了一个名为Nivot.SignalR.Client.Net35的程序包,但它使用的是不再使用的AspNet.SignalR.Client,我已经在我的WebApi解决方案中创建了所需的所有内容,使用Microsoft.AspNetCore.SignalR,然后我在我的Unity项目中更改了PlayerSettings Scripting Runtime Version .NET 4.x Equivalent和Api Compatibility Level到.NET Standard 2.0,这与AspNetCore.SignalR.Client兼容。

但是,在我安装包并编辑脚本时,Visual Studio保持沉默,但Unity表示Microsoft.AspNetCore.SignalR.Client命名空间不存在。我读到了一些文章,说我必须将它们复制到Assets文件夹中的一个文件夹中,所以我这样做了,然后Unity就会显示"Unloading broken assembly Assets/Packages/Microsoft.AspNetCore.SignalR.Client.dll, this assembly can cause crashes in the runtime",而且它不能工作。

我已经失去了希望。但是我记得有Stackoverflow网站,现在我希望这里有人能够帮助我。谢谢。


你能否编辑你的问题并添加一些段落和其他格式,使其更易读?它现在看起来像一堵墙。 - Andy
"这个程序集可能会在运行时导致崩溃,而且它无法工作。" 崩溃了吗?你能发布一下崩溃日志吗?你必须提供证据来支持这样的说法,而这个证据就是崩溃日志。在你的问题中提到Unity版本也非常重要。 - Programmer
你尝试过创建一个干净的Visual Studio项目,安装SignalR NuGet并自己构建.dll文件,然后将新的dll(s)复制到Unity项目内的assets/plugin/文件夹中吗?这在过去解决了我类似的问题,因为在Unity项目内使用NuGet会以某种方式搞乱文件链接。 - Remy
如果您能提供一个可以重现问题的项目,我认为我们可以提供更多细节。 - Tiago Martins Peres
去年我收到了一位用户的电子邮件,他正在使用SignalR客户端库以及我的JSON .NET端口。https://www.assetstore.unity3d.com/#/content/11347 - Tiago Martins Peres
2个回答

0

你需要在Unity项目中将目标设置为.net framework,而不是.Net Standard 2.0,因为没有针对.Net Standard 2.0的SignalR Core能够与Unity兼容。除非Unity更新到2.2或3.0,否则我们将无法在Unity中使用客户端的SignalR Core库。

或者,你可以尝试在Unity客户端上使用另一种不同的.net websocket实现。


0

你的错误与缺少依赖项有关。

使用最新的稳定二进制文件,SignalR客户端和服务器都可以在Unity3D中工作。您可以在AspNetCoreAspNetCoreClient1.1.0目录中找到您需要的最小DLL集这里。包括相关的.meta文件。请访问此项目的设置以进行正确的配置。

在Unity3D中无法正确使用nuget,它太过错误。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接