Unity3d Unity无法从自定义程序集定义中查看Assembly-CSharp.dll程序集中的脚本

Unity3d Unity无法从自定义程序集定义中查看Assembly-CSharp.dll程序集中的脚本,unity3d,oculus,Unity3d,Oculus,我已将程序集定义(.asmdef)添加到脚本文件夹(自定义unity脚本)。现在Unity抱怨说它找不到OVRInput类,我在我的一个脚本(GameManager.cs)中使用了它: 此OVRInput类被编译到程序集CSharp.dll托管程序集中,如下所示: 默认情况下,我希望Unity能够看到这种依赖并解决它,但不知何故它并没有。因此,我决定手动将“Assembly CSharp.dll”添加到程序集的依赖项部分(称为“程序集定义引用”),但Unity给出了一个错误,它找不到这样的程

我已将程序集定义(.asmdef)添加到脚本文件夹(自定义unity脚本)。现在Unity抱怨说它找不到OVRInput类,我在我的一个脚本(GameManager.cs)中使用了它:

此OVRInput类被编译到程序集CSharp.dll托管程序集中,如下所示:

默认情况下,我希望Unity能够看到这种依赖并解决它,但不知何故它并没有。因此,我决定手动将“Assembly CSharp.dll”添加到程序集的依赖项部分(称为“程序集定义引用”),但Unity给出了一个错误,它找不到这样的程序集

以下是我的自定义程序集定义文件(它将“脚本””文件夹中的所有脚本放入程序集):

目标平台:Android(Oculus Gear VR) Unity版本2018.3.13f1。

这就是重点 程序集定义(实际上)是完全独立的项目(同一解决方案的一部分,但单独的DLL)。这实际上就是它们在VisualStudio的解决方案资源管理器中的显示方式

它们是指您在中引用的内容(如textmashpro或JsonDotNet),而不是从中引用的内容。因此,您不能引用主
程序集Csharp
“名称空间。”

优点是,当脚本文件更改时,只重新编译其包含的程序集,而不是整个项目


在这种情况下,如果要引用Oculus文件,您需要创建另一个包含这些文件的程序集定义(并将其作为第一个程序集的依赖项添加)或者根本不使用程序集定义。

您应该创建另一个asmdef以包括Oculus库,正如您和@shingo所说,我只是在顶级Oculus文件夹中创建了一个程序集定义文件(asmdef),并将该程序集添加到我自己程序集的依赖项列表中。后来一切都好了!更新:实际上,将Oculus文件与Assembly_Csharp dll分离需要几个asmdef文件:1-在Oculus文件夹中创建一个asmdef(例如“MyOculusAssembly.asmdef”2-在Oculus>VR>编辑器文件夹中创建另一个asmdef,引用“MyOculusAssembly.asmdef”3-在Oculus>VR>脚本>编辑器文件夹中创建另一个asmdef,引用“MyOculusAssembly.asmdef”。是的,因为另外两个是编辑器魔法文件夹。还有,神圣的carp,这些都是糟糕的程序集名称。它们不是。这是为了清晰起见。你可以在应用程序中从它们中删除“My”。“My”表示你自己创建了它们。