手动添加.net 4.5脚本到Unity:潜在的问题

本文关键字:Unity 问题 脚本 添加 net | 更新日期: 2023-09-27 17:54:53

我最近不得不在Unity中进行一些工作,这些工作只需要在。net的后期版本中可用的类,而Unity还不支持。我设法下载了很少的脚本,我缺少并将其添加到我的项目中,它似乎工作得很好。我想知道的是,为什么我不能把整个。net源代码塞到我的项目中?这样做意味着什么?

编辑:到目前为止,我添加的脚本是WeakReference的通用版本以及它需要的任何依赖(System.Diagnostics.Contract中的契约)。编辑:我基本上想知道为什么我不能简单地将。net后期版本中的c#类文件转移到使用旧版本。net的Unity中。是软件问题吗?是硬件问题吗?是因为Unity的系统组件是根据早期版本的。net构建的吗?

手动添加.net 4.5脚本到Unity:潜在的问题

短答:

安装Visual Studio Tools for Unity(当你安装Unity时,它会自动安装),当你这样做时,你可以在"目标框架"下拉框中告诉你的。csproj目标是。net Unity使用的特殊版本,你将只能编译具有Unity支持的方法和类型的dll。


长答:

这是因为Unity没有使用你电脑上安装的。net版本。Unity使用的是Mono,而且是一个非常老的版本。这使得unity可以在多个平台和操作系统上运行。因此,您只能使用Mono支持的版本中的功能。

但是,如果你看看他们的alpha版本的路线图,你会看到

script: c# Compiler Upgrade
升级Mono c#编译器当前的。net 2.0和2.0子集配置文件。注意,这是一个升级只有c#编译器,而不是完整的Mono运行时

然后在"研究"阶段继续

script: .NET Profile Upgrade
将。net配置文件升级到4.6,以便访问最新的。net功能和api。


更新:

你可以从这里获得一个使用4.6配置文件的实验版本。

以下是5.6.0b5测试版的注意事项

  • 对于这个版本,编辑器和以下播放器应该是工作的:
    • Windows, OSX, Linux单机
    • iOS with IL2CPP
  • Android with IL2CPP and Mono
  • 已知其他平台还不能工作,可能不值得安装。
  • 通过Visual Studio Tools for Unity或MonoDevelop管理调试不支持在此版本中。如果您想使用VSTU编辑请使用链接在这底部的特殊构建职位。
  • 编译器针对c# 6语言。
  • 编译器默认情况下仍将以。net 4.6框架配置文件为目标。
  • 已知问题
      Android/Mono构建不能正常工作与托管代码剥离。请暂时禁用托管代码剥离。
  • 对于某些项目,Windows独立播放器可能会在Windows 8.1上崩溃。这是断断续续的,所以我们希望看到任何崩溃关于
  • 的报告或数据

    类似的问题在此之前已经回答过了。就像我在你的另一个问题中所描述的那样,你可以"注入"更新的内容并使用它们,但它们迟早会适得其反(例如不能编译到特定的系统,可以编译但不能在任何移动商店中发布,执行速度慢得惊人,构建量大等等)。最坏的情况下,你的项目将受到损害)。
    如果你真的不能重构你正在开发的项目,你觉得你必须使用"最新技术",记住注入的类代码必须是数据对象,也就是说,与GameObjects完全无关。
    还建议在可能的时间和地点从ScriptableObject派生。
    EDIT:但我建议我之前告诉你的(重构)或链接的答案描述("导出"与mono/.net2.0不兼容的代码到外部dll并从那里使用它)