我正在开发一个Unity项目,我需要使用远程客户端。我创建了一个接口类,我在其他Unity项目中使用了远程服务器。
当服务器正常运行时,客户端的创建失败,并出现以下异常:
System.TypeInitializationException:System.Runtime.Remoting.Channels.SocketCache --->的类型初始值设定项引发了异常。 System.NotImplementedException:未实现所请求的功能。 在System.Threading.ThreadPool.UnsafeRegisterWaitForSingleObject(System.Threading.WaitHandle waitObject,System.Threading.WaitOrTimerCallback callBack,System.Object state,TimeSpan timeout,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());
}
....
有谁知道如何解决这个问题? 根据{{3}},Mono应该有远程支持。 我在Windows 7 x64 Professional机器上使用Unity 3.5.1(应该有Mono 2.6.3)。
提前致谢
答案 0 :(得分:1)
我正在使用Unity做同样的事情。
您要做的第一件事是将播放器Api兼容级别从“.Net 2.0子集”更改为“.Net 2.0”
接下来你必须从MonoDevelop获得2.0单声道库“System.Runtime.Remoting.dll”
我的位于“/Applications/Unity/MonoDevelop.app/Contents/Frameworks/Mono.framework/Libraries/mono/2.0/System.Runtime.Remoting.dll”
将其放入“Assets / Plugins”文件夹中,Unity将负责拖出其余的库。
从那时起,似乎远程工作毫无障碍:)
如果你添加Remoting dll和build只是为了找到类似“但是不允许包含或无法找到dll”的错误,那么你仍然使用“.Net 2.0 Subset”
答案 1 :(得分:0)
这里有两个选项: