【发布时间】:2015-05-18 17:16:34
【问题描述】:
我正在使用 Unity3D 版本 5 开发游戏。该游戏应使用已在 C# .NET4.5 引擎中编程的严格业务规则。使用 Xamarin/Mono,我们希望可以在 windows、android 等其他平台上使用它......
我尝试将引擎构建到 dll 中,并将其用作 Unity 中的托管插件。但是 Unity 使用旧版本的 Mono 编译整个游戏并且拒绝使用 .NET 4.5 dll。
我确实需要使用此代码,我考虑将其降级到 .NET 3.5,但考虑到引擎上已经完成的工作,这不是一个可接受的解决方案。
关于 android,我认为使用 Xamarin 来获取原生 android 代码并将其用作 Unity 中的原生插件。现在我需要一个适用于 Windows 的解决方案。我正在寻找在 C++ 中使用 C# 代码制作非托管 dll 的方法,但我正在努力理解 COM 互操作、C++/CLI 或其他方法之间适用的方式。
有没有人知道在 Unity 中包含 .NET 4.5 的代码而无需/很少努力的方法?
【问题讨论】:
-
你必须让你的类库成为 PCL 类库
-
@Ewan :在我看来 Unity 不接受 PCL 用于 Windows8/8.1 应用程序以外的任何其他应用程序。此外,仅 .NET 4.0+ 支持 PCL
-
您是否将它与 win 8 的新 .net 核心内容混淆了?我在 iphone xamarin 上完成了单声道的 PCL 工作,您需要安装单声道框架才能定位它
-
您将无法使用 .net 4.5 功能,但如果它只是您的核心逻辑,您不应该使用
-
当我在 Visual Studio 中创建 PCL 项目时,我可以选择 Xamarin.Android 作为目标等,但如果我希望它适用于 Windows,我将需要 .NET 目标,而不是建议在 4.0 下。此外,PCL 限制了可用组件,我使用 XmlDocument 或 Tasks 之类的东西。这就是为什么我需要 .NET 4.5 而不能简单地编译为 3.5。