【问题标题】:Building a DLL for Unity with Mono使用 Mono 为 Unity 构建 DLL
【发布时间】:2020-01-10 21:12:56
【问题描述】:

我正在使用JetBrains Rider 尝试创建一个DLL 以用于Unity3d。我有一个ClassLibrary 项目,其中的一些类继承自Monobehaviour,我似乎无法在参考文献中正确找到或链接 Mono 程序集。

当我构建项目时出现此错误:

TestScript.cs(8, 31): [CS0246] 类型或命名空间名称 找不到“单一行为”(您是否缺少 using 指令 还是程序集参考?)

谁能帮帮我?谢谢。

【问题讨论】:

    标签: .net unity3d dll mono rider


    【解决方案1】:

    您确定要创建类库吗?通常,Unity 的代码通过 Unity 接口直接添加为 C# 脚本文件资产,所有这些文件都位于 Assets 文件夹中。双击其中一个文件将启动您的外部编辑器,例如 Rider 或 Visual Studio,并为您生成一个 .csproj,其中包含您需要的所有参考。

    如果您想将 Unity 项目拆分成更小、更易于管理的部分,您可以使用 .asmdef Assembly Definition files。它们也存在于Assets 文件夹中,本质上是告诉 Unity,它们所在的文件夹应该被编译成一个单独的程序集,并被视为一个单独的 C# 项目。

    您可以通过creating a package 获得更好的分离和重用。它们位于项目根目录的Packages 文件夹中。您的包可以包含多个 .asmdef 文件,这些文件将被视为多个项目/程序集。也可以add a package directly from a Git URL,比如GitHub。

    为 Unity 创建类库程序集的缺点是您需要手动将其复制到 Assets 文件夹中,然后 Unity 才能识别它并使用其中的代码。程序集定义文件和包通常是解决此问题的更好方法。

    如果您仍想创建 Unity 类库项目,Rider 将帮助您提供项目模板 - 从“新建项目”对话框中,您可以选择“Unity 类库”,您可以选择项目名称、位置,更重要的是,选择将作为参考添加的 UnityEngine.dll 的位置。 Rider 会在您的机器上找到所有 Unity 安装(只要它们位于标准位置),并在下拉菜单中为您提供选择。

    如果您已经有了一个想要添加 Unity 支持的类库,那么您可以添加对 UnityEngine.dll 的引用。您需要找到该文件,该文件位于不同的位置,具体取决于您拥有的操作系​​统,以及您是手动安装 Unity 还是使用 Unity Hub。例如,在我的机器上,当我通过 Unity Hub 安装 Unity 时,文件位于 /Applications/Unity/Hub/Editor/2019.3.0f3/Unity.app/Contents/Managed/UnityEngine.dll。在 Windows 上,这将位于 Program Files 下的类似路径。

    【讨论】:

    • 太棒了,这正是我想要的。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多