【问题标题】:mono in unity 3d and .net remotingunity 3d 和 .net 远程处理中的单声道
【发布时间】:2013-05-02 16:47:32
【问题描述】:

我正在处理一个需要与远程客户端合作的 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 状态, 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 Professional 机器上使用 Unity 3.5.1(应该有 Mono 2.6.3)。

提前致谢

【问题讨论】:

  • 服务器也是基于 Mono 还是 .NET?
  • 它也是基于 Mono 的(又名 Unity 程序),但服务器可以工作
  • 您是否为您的发行版安装了适当的 libmono-system-runtimeX.Y-cil 包(X.Y 是版本号。2.0、4.0 等)
  • 我有 MonoDevelop 2.8.2 版。由于 Mono 是随 Unity Editor 3.5 安装的,我不知道具体在哪里搜索。
  • 你的操作系统是什么?如果是 Linux,是哪一种?

标签: c# mono unity3d remoting


【解决方案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 并构建只是发现“但不允许包含或找不到 dll”之类的错误,那么您仍在使用“.Net 2.0 子集”

【讨论】:

    【解决方案2】:

    这里有两个选项:

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

    【讨论】:

    • 第一点 -> 我已经切换到 2.0,没有成功 第二点 -> 这将是一个挑战 ^^ 我想要完成的基本上是能够从一个应用到另一个(都统一)如果你有另一种解决方案,请告诉我......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-22
    • 2023-04-08
    • 2010-10-27
    • 2010-09-05
    相关资源
    最近更新 更多