【问题标题】:Unity c# scripts in DLLDLL 中的 Unity c# 脚本
【发布时间】:2013-08-07 03:25:55
【问题描述】:

在 Unity 4.1 项目中,我希望将所有 C# 脚本都放在 DLL 中。 Unity 创建了一个 Visual Studio 项目,我能够正确编译代码。 编译生成 DLL,但 Unity 不能识别所有类,只识别那些继承 MonoBehaviour 的类。所有课程都是公开的,Unity 是 Pro。 如何让 Unity“看到”所有类?

我尝试使用 Mono 2.8 进行编译,它构建了 DLL。所有的课程似乎都在那里,但没有任何效果,我得到了这些错误:

    ApplicationException: Unable to find a suitable compiler
    UnityEditor.Scripting.ScriptCompilers.CreateCompilerInstance (MonoIsland island, Boolean buildingForEditor, BuildTarget targetPlatform) (at                                                         
    C:/BuildAgent/work/7535de4ca26c26ac/Editor/Mono/Scripting/ScriptCompilers.cs:99)

    Failed to create compiler instance

【问题讨论】:

    标签: c# dll unity3d


    【解决方案1】:

    确保您是针对 .NET 框架 3.5 或更低版本编译 DLL。

    To change the targeted .NET Framework version in an existing project:

    1. 打开您要更改的项目。
    2. 解决方案资源管理器工具栏中,选择属性按钮。
    3. 您也可以在Solution Explorer中选择项目节点,打开上下文菜单(通过右键单击该节点),然后选择Properties
    4. 您应该会在 应用程序 选项卡上看到设置。如果没有,请选择它。
    5. Target Framework 下拉列表中,选择所需的 .NET Framework 版本。然后点击确定按钮

    【讨论】:

    • 定位到这个版本会导致很多正确的代码无法编译。像默认参数和默认的 get/set 属性访问器。
    • Unity 仅与 .NET 2.0 DLL 二进制兼容。所以你只有两条路可以走: 1. 在 Unity 中编译它。 2.在.NET 2.0中编译
    • 注意 - 我相信 Unity3D v4 实际上可以利用 .NET 3.5 和更低版本的 DLL。我已经更新了我的帖子以适应。大多数人将此与 Unity 自己的内部 Mono 版本的 .NET 混淆,后者更接近 v2.0。
    【解决方案2】:

    已解决

    我正在使用 Visual Studio 2012 来编译 DLL,包括运行时和编辑器。 针对 .NET 3.5。 这篇文章对我帮助很大:http://forum.unity3d.com/threads/148078-Reducing-script-compile-time-or-a-better-workflow-to-reduce-excessive-recompiling?p=1026639&viewfull=1#post1026639

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多