【问题标题】:Building a UWP App in Unity using TcpClient使用 TcpClient 在 Unity 中构建 UWP 应用
【发布时间】:2016-09-02 20:04:03
【问题描述】:

我正在尝试使用利用 TcpClient 的 C# 插件统一构建 UWP 应用程序。该插件使用 System.Net.Sockets。当我构建一个独立的可执行文件时,该应用程序可以在我的本地机器上完美运行。但是,当我尝试为 Universal 10 平台构建它时,它不起作用。这很重要,因为我的目标是在 Hololens 上部署应用程序。

我在控制台中收到错误 CS0246:

The type or namespace TcpClient could not be found (are you missing a using directive or an assembly reference?)

我遇到过在让 TcpClient 与 Unity 一起工作时遇到类似问题的人。我尝试按照此解决方案安装预发布 System.Net.Sockets 4.1 包:https://github.com/dotnet/corefx/issues/5939

我在 Visual Studio 中打开了 C# 项目,并成功安装了 4.1 版。但是,当我再次尝试构建时遇到了同样的错误。这是我的 packages.config 文件:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="System.IO" version="4.0.0" targetFramework="net461" />
  <package id="System.Net.Primitives" version="4.0.10"  targetFramework="net461" />
  <package id="System.Net.Sockets" version="4.1.0-beta-23516" targetFramework="net461" />
  <package id="System.Runtime" version="4.0.0" targetFramework="net461" />
  <package id="System.Threading.Tasks" version="4.0.0" targetFramework="net461" />
</packages>

我也遇到过这个解决方案,它使用 Windows.Networking.Sockets 包中的 StreamSocket 代替: How to connect to Unity game server socket from UWP app via sockets?

我考虑过重写所有代码以使用 StreamSocket。但是,由于我没有编写原始代码,因此这将很困难且容易出错。

我正在处理的代码是 Brekel Pro Face 2 中包含的数据流脚本。我会从代码中发布一些 sn-ps,但我不确定 Brekel 是否可以接受。

有什么想法吗?

【问题讨论】:

    标签: c# sockets unity3d uwp tcpclient


    【解决方案1】:

    问题

    Unity 以 Mono 为目标,它要求插件是 .NET 平台 DLL。但是,Hololens 支持 Windows 通用应用程序,这要求插件是通用窗口平台 (UWP) DLL。因此,Unity 和 Hololens 无法使用相同的插件。如果它适用于 Unity,则构建 Hololens 将失败。

    解决方案

    解决办法是使用两个版本的插件; .NET 平台 DLL 和 UWP DLL。两个 DLL 应该具有相同的接口,以便允许使用相同代码从两个 DLL 中的任何一个引用类、方法等。

    解决步骤

    假设您已经创建了具有相同接口(即命名空间、公共类名等)的两个 DLL 文件 (x.dll) 和 (x.uwp.dll),解决方案应该如下所示:

    1. 在 Unity 项目的 Assets 文件夹下创建一个 Plugins 文件夹。
    2. 将 (x.dll) 文件拖放到 Plugins 文件夹中并选择它。
    3. 在“为插件选择平台”下的“检查器”窗口中,确保仅选中“编辑器”。
    4. 在 Plugins 文件夹下创建一个名为 WSA 的子文件夹。
    5. 将 (x.uwp.dll) 文件拖放到 WSA 文件夹中并选择它。
    6. 在“为插件选择平台”下的“检查器”窗口中,确保仅选中 WSAPlayer。

    现在,Unity 将在您在机器上运行项目时使用 x.dll,并在您为 Hololens 构建项目时使用 x.uwp.dll。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-22
      • 2019-01-17
      • 2018-07-30
      • 1970-01-01
      • 1970-01-01
      • 2018-06-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多