web-dev-qa-db-ja.com

このアセンブリをコンパイルするときに次のエラーが発生するのはなぜですか?

次のコマンドラインコマンドを使用して、プロジェクトからコードのアセンブリをコンパイルしようとしています。

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の両方が導入されたためです。しかし、Unity 5がこのコンピューターに触れたことのある唯一のバージョンであるため、参照しているdllでそれを見逃す可能性があるのか​​わかりません。

ちなみに、私はこの質問をUnity Answersに投稿しましたが、まだ回答を受け取っていません。アセンブリのコンパイルは、ほとんどのユーザーが行うことを選択した範囲を超えているためだと思います。したがって、ここでそれを尋ねます。

8
APalmer

名前空間UnityEngine.EventSystemsは実際にはnityEngine.UI.dllに表示され、nityEngine.dllには表示されないため、コマンドラインから手動でコンパイルする場合は前者も参照する必要があるようです。 Unityプロジェクトにはデフォルトでこれがあります(以下を参照)。

これは、選択したリフレクターツールでアセンブリを開くことで確認されます。ここでは、JetBrainsdotPeekを使用しています。

enter image description here

これは、私のテストプロジェクトがデフォルトのUnity参照でどのように表示されるかです。デフォルトでは、nityEngine.UIへの参照がUnityで作成されたプロジェクトにすでに表示されていることに注意してください。

enter image description here

Unityを介してWindnowsデスクトップアプリをビルドしたとき、上記のdllは次の場所に表示されました。

<drive>:<projectOutFolder>\<projectName> _ Data\Managed

6
MickyD

UnityEngine.dllを確認しましたが、Eventsystems/UI名前空間が含まれていません。それにもかかわらず、Unity5\Editor\Data\UnityExtensions\Unity\GUISystem\UnityEngine.UI.dllにこれらの名前空間を含むdllがあります。

2
Marius Junak

あなたが試すことができます:

「プロジェクトパネル」を右クリックし、「すべて再インポート」の後にクリックします。

プラットフォーム間の切り替えが原因で発生する可能性があります。 IOS、またはデスクトップ..したがって、フォロワーは不要になったために削除されます。

私のために解決してください:Unity 5.2、Win 7、32ビット;

幸運を!

Macの場合は/Applications/Unity/Unity.app/Contents/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll

0
Hustlion