使用 Mono 为 Unity 构建 DLL
Building a DLL for Unity with Mono
我正在使用 JetBrains
Rider 尝试创建一个 DLL
用于 Unity3d
。我有一个 ClassLibrary
项目,里面有一些 类 继承自 Monobehaviour
,但我似乎无法在参考文献中正确找到或 link Mono 程序集。
当我构建项目时出现此错误:
TestScript.cs(8, 31): [CS0246] The type or namespace name
'Monobehaviour' could not be found (are you missing a using directive
or an assembly reference?)
谁能帮帮我?谢谢。
您确定要创建 class 库吗?通常,Unity 的代码是通过 Unity 界面直接作为 C# 脚本文件资产添加的,所有这些文件都位于 Assets
文件夹中。双击这些文件之一将启动您的外部编辑器,例如 Rider 或 Visual Studio,并为您生成 .csproj
,其中包含您需要的所有参考。
如果您想将您的 Unity 项目拆分成更小、更易于管理的部分,您可以使用 .asmdef
Assembly Definition files。它们也存在于 Assets
文件夹中,并且实质上告诉 Unity 它们所在的文件夹应该被编译成一个单独的程序集,并被视为一个单独的 C# 项目。
您可以通过creating a package. These live in the Packages
folder at the root of your project. Your package can contain multiple .asmdef
files that will be treated as multiple projects/assemblies. You can also add a package directly from a Git URL获得更好的分离和重用,例如GitHub。
为 Unity 创建 class 库程序集的缺点是您需要手动将其复制到 Assets
文件夹中,然后 Unity 才能识别它并使用其中的代码。程序集定义文件和包通常是解决这个问题的更好方法。
如果您仍想创建一个 Unity class 库项目,Rider 将帮助您创建一个项目模板 - 从“新建项目”对话框中,您可以 select "Unity class library",然后您可以 select 项目的名称、位置,更重要的是 select 将作为参考添加的 UnityEngine.dll 的位置。 Rider 会在您的机器上找到所有安装的 Unity(只要它们位于标准位置)并在下拉列表中为您提供选择。
如果您已经有了要添加 Unity 支持的 class 库,则可以添加对 UnityEngine.dll
的引用。您需要找到该文件,该文件位于不同的位置,具体取决于您拥有的 OS 以及您是手动安装 Unity 还是使用 Unity Hub。例如,在我的机器上,当我通过 Unity Hub 安装 Unity 时,文件位于 /Applications/Unity/Hub/Editor/2019.3.0f3/Unity.app/Contents/Managed/UnityEngine.dll
。在 Windows,这将位于 Program Files 下的类似路径。
我正在使用 JetBrains
Rider 尝试创建一个 DLL
用于 Unity3d
。我有一个 ClassLibrary
项目,里面有一些 类 继承自 Monobehaviour
,但我似乎无法在参考文献中正确找到或 link Mono 程序集。
当我构建项目时出现此错误:
TestScript.cs(8, 31): [CS0246] The type or namespace name 'Monobehaviour' could not be found (are you missing a using directive or an assembly reference?)
谁能帮帮我?谢谢。
您确定要创建 class 库吗?通常,Unity 的代码是通过 Unity 界面直接作为 C# 脚本文件资产添加的,所有这些文件都位于 Assets
文件夹中。双击这些文件之一将启动您的外部编辑器,例如 Rider 或 Visual Studio,并为您生成 .csproj
,其中包含您需要的所有参考。
如果您想将您的 Unity 项目拆分成更小、更易于管理的部分,您可以使用 .asmdef
Assembly Definition files。它们也存在于 Assets
文件夹中,并且实质上告诉 Unity 它们所在的文件夹应该被编译成一个单独的程序集,并被视为一个单独的 C# 项目。
您可以通过creating a package. These live in the Packages
folder at the root of your project. Your package can contain multiple .asmdef
files that will be treated as multiple projects/assemblies. You can also add a package directly from a Git URL获得更好的分离和重用,例如GitHub。
为 Unity 创建 class 库程序集的缺点是您需要手动将其复制到 Assets
文件夹中,然后 Unity 才能识别它并使用其中的代码。程序集定义文件和包通常是解决这个问题的更好方法。
如果您仍想创建一个 Unity class 库项目,Rider 将帮助您创建一个项目模板 - 从“新建项目”对话框中,您可以 select "Unity class library",然后您可以 select 项目的名称、位置,更重要的是 select 将作为参考添加的 UnityEngine.dll 的位置。 Rider 会在您的机器上找到所有安装的 Unity(只要它们位于标准位置)并在下拉列表中为您提供选择。
如果您已经有了要添加 Unity 支持的 class 库,则可以添加对 UnityEngine.dll
的引用。您需要找到该文件,该文件位于不同的位置,具体取决于您拥有的 OS 以及您是手动安装 Unity 还是使用 Unity Hub。例如,在我的机器上,当我通过 Unity Hub 安装 Unity 时,文件位于 /Applications/Unity/Hub/Editor/2019.3.0f3/Unity.app/Contents/Managed/UnityEngine.dll
。在 Windows,这将位于 Program Files 下的类似路径。