我尝试使用以下命令行命令从我的项目中编译代码程序集:
C:/"Program Files"/Unity/Editor/Data/Mono/bin/gmcs
-target:library -out:C:/Users/Austin/Desktop/PixelExpanse.dll
-recurse:C:/Users/Austin/Desktop/Projects/Repos/trunk/PixelExpanse/SpaceColonyRefactor/Assets/Source/*.cs
-d:RUNTIME -r:C:/"Program Files"/Unity/Editor/Data/Managed/UnityEngine.dll
正如您所看到的,我相信,我正确地引用了UnityEngine.dll
。
要编译的代码包含对UnityEngine.UI
和UnityEngine.EventSystems
的引用。但是当我运行上面的命令时,我得到以下编译错误:
错误CS0234:类型或命名空间名称' EventSystems'名称空间中不存在UnityEngine'。你错过了装配参考吗?
从我通过谷歌搜索找到的内容,它看起来就像人们在使用4.6之前的程序集时遇到的错误,因为那时引入了EventSystems和UI。但我不知道如何在我引用的dll中错过这一点,因为Unity 5是唯一曾触及过此计算机的版本。
作为附注,我已将此问题发布到Unity Answers并且尚未收到回复。我希望它是因为汇编编译超出了大多数用户选择的范围。因此,我在这里问。
答案 0 :(得分:6)
命名空间UnityEngine.EventSystems
实际上出现在 UnityEngine.UI.dll 而不是 UnityEngine.dll 中,因此在手动编译时似乎也需要引用前者从命令行。 Unity项目默认具有此功能(见下文)。
通过在您选择的反射器工具中打开组件来验证这一点,这里我使用的是JetBrains dotPeek :
这是我的测试项目与默认Unity引用一起出现的方式。请注意,默认情况下,Unity创建的项目中已经出现了对 UnityEngine.UI 的引用:
当我通过Unity构建我的Windnows桌面应用程序时,上面的dll出现在:
< 驱动>:其中 projectOutFolder > \< PROJECTNAME >的 _Data \托管强>
答案 1 :(得分:1)
我检查了UnityEngine.dll,但没有包含Eventsystems / UI命名空间。尽管Unity5 \ Editor \ Data \ UnityExtensions \ Unity \ GUISystem \ UnityEngine.UI.dll中有一个dll,其中包含这些命名空间。
答案 2 :(得分:0)
您可以尝试:
右键单击"项目面板",然后点击"重新导入全部"。
由于平台之间的切换,可能会发生这种情况,例如: IOS,或桌面..因此,folrders被删除成为不必要的..
为我解决:Unity 5.2,Win 7,32bits;
祝你好运!答案 3 :(得分:0)
对于mac,它是/Applications/Unity/Unity.app/Contents/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll
。