单声道在unity 3d和.net remoting

本文关键字:3d net remoting unity 声道 单声道 | 更新日期: 2023-09-27 18:11:46

我正在做一个Unity项目,我需要使用远程客户端。我已经创建了一个接口类,并在另一个Unity项目中使用远程服务器。

当服务器正常工作时,客户端创建失败,出现以下异常:

系统。TypeInitializationException:由System. runtime . remoting . channels . socketcache --> System的类型初始化器抛出异常。NotImplementedException:请求的特性没有实现。System.Threading. threadpool . unsaferegisterwaitforsingleobjectwaitortimercallback回调,系统。对象状态,TimeSpan超时,Boolean executeOnlyOnce) [0x00000] in:0

客户端代码:

MyRemotableObject remoteObject;
void Awake ()
{
    try
    {
        TcpChannel chan = new TcpChannel();
        ChannelServices.RegisterChannel(chan, false);
        remoteObject = (MyRemotableObject)Activator.GetObject(typeof(MyRemotableObject), "tcp://localhost:124/TargetShooterMenu");
    }
    catch (Exception e)
    {
        Debug.LogError(e.ToString());
    }
....
有谁知道如何解决这个问题吗?根据Mono FAQ, Mono应该有远程支持。我在Windows 7 x64专业机器上使用Unity 3.5.1(应该有Mono 2.6.3)。

Thanks in advance

单声道在unity 3d和.net remoting

我使用Unity做完全相同的事情。

你要做的第一件事是将播放器Api兼容性级别从"。Net 2.0子集"to"。Net 2.0 "

接下来,你必须从MonoDevelop

中获得2.0 mono库"System.Runtime.Remoting.dll"。

我的位于"/Applications/Unity/monodevelopment .app/Contents/Frameworks/Mono.framework/Libraries/mono/2.0/System.Runtime.Remoting.dll"

放到"Assets/Plugins"文件夹中,Unity会负责拖出其余的库。

从那时起,远程工作似乎没有任何障碍:)

如果您添加Remoting dll并构建时只发现"但是dll不允许包含或无法找到"这样的错误,那么您仍然使用"。Net 2.0子集"

这里有两个选项:

  1. 使用的。net子集不支持。在播放器设置中切换2.0子集和完整2.0并再次测试
  2. 如果这没有帮助,那么我担心你除了实现自己的协议或使用DLLImport进行真正的本机代码之外,什么也做不了。这里的问题是不安全的代码依赖,这在Unity中通常是禁用的,并从自定义Mono版本(基于Mono 2.6)中删除。Unity既不支持也不使用系统的Mono版本,所以任何基于这些版本的测试和假设在这种情况下都是无关紧要的。