单声道在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做完全相同的事情。
你要做的第一件事是将播放器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子集"
这里有两个选项:
- 使用的。net子集不支持。在播放器设置中切换2.0子集和完整2.0并再次测试
- 如果这没有帮助,那么我担心你除了实现自己的协议或使用DLLImport进行真正的本机代码之外,什么也做不了。这里的问题是不安全的代码依赖,这在Unity中通常是禁用的,并从自定义Mono版本(基于Mono 2.6)中删除。Unity既不支持也不使用系统的Mono版本,所以任何基于这些版本的测试和假设在这种情况下都是无关紧要的。