哪个 Unity 程序集包含项目文件夹 class 类型?

Which Unity Assembly holds Project folder class types?

我正在尝试引用 "where" 我在项目文件夹中创建的所有 class 定义,因此我可以收集 class 类型以在编辑器中使用脚本。这意味着,它们必须存在 "somewhere",否则我将无法使用 IntelliSense 从项目文件夹中引用它们,并且如果我使用类型声明,也会出现类型不存在的错误。

如果我可以将这些类型放入一个集合中,我就可以在我的自定义编辑器中使用它们 window。

我的研究表明程序集可能是存储类型的地方。这是真的?如果是,哪个程序集包含项目文件夹的 class 定义类型。

Unity 为整个项目创建自己的程序集定义

(两个,实际上,一个运行时和一个编辑器:编辑器可以引用运行时,但反之亦然;此依赖项是自动设置的,您无需执行任何操作(但创建您自己的 namespace s 是个好主意!1))

根据这些规则在资产文件夹中创建的脚本显示在 Assembly-CSharp(项目)/Assets/<where ever you created your script file>

下的解决方案中

例如:

但是,您也可以创建自己的 程序集定义,这将自动包含同一文件夹及以下文件夹中的所有内容。例如,我正在使用 Stompy Robot 的运行时调试器控制台,但我不想让 Unity 每次更改我的代码时都重新编译它,所以我为它创建了一个程序集定义(实际上是三个,因为两个编辑器魔法文件夹)。

如果这样做,您必须告诉程序集 def 您想要引用 另一个 程序集,因为我必须处理两个编辑器程序集 def。但是,您不能添加对 Unity 主程序集的引用。

例如,SR 的调试器的两个编辑器程序集之一。

我希望这有助于揭开谜团。

  1. 您可能正在尝试弄清楚如何 import 您的 non-editor 文件在您的编辑器文件中。如果您没有名称空间,它们将存在于顶级“全局”级别并且应该自动可见。 Unity 在这里没有什么特别的,但建议您为运行时和编辑器创建自己的 namespace

<Unity project name>/Library/ScriptAssemblies/Assembly-CSharp.dll

这是默认程序集,如果您在项目中创建程序集定义,文件名是可变的。

<Unity project name>/<Unity project name>.CSharp.csproj

这是默认的工程文件,您也可以将其添加到自己的工程中进行引用。