次のコマンドラインコマンドを使用して、プロジェクトからコードのアセンブリをコンパイルしようとしています。
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に投稿しましたが、まだ回答を受け取っていません。アセンブリのコンパイルは、ほとんどのユーザーが行うことを選択した範囲を超えているためだと思います。したがって、ここでそれを尋ねます。
名前空間UnityEngine.EventSystems
は実際にはnityEngine.UI.dllに表示され、nityEngine.dllには表示されないため、コマンドラインから手動でコンパイルする場合は前者も参照する必要があるようです。 Unityプロジェクトにはデフォルトでこれがあります(以下を参照)。
これは、選択したリフレクターツールでアセンブリを開くことで確認されます。ここでは、JetBrainsdotPeekを使用しています。
これは、私のテストプロジェクトがデフォルトのUnity参照でどのように表示されるかです。デフォルトでは、nityEngine.UIへの参照がUnityで作成されたプロジェクトにすでに表示されていることに注意してください。
Unityを介してWindnowsデスクトップアプリをビルドしたとき、上記のdllは次の場所に表示されました。
<drive>:<projectOutFolder>\<projectName> _ Data\Managed
UnityEngine.dllを確認しましたが、Eventsystems/UI名前空間が含まれていません。それにもかかわらず、Unity5\Editor\Data\UnityExtensions\Unity\GUISystem\UnityEngine.UI.dllにこれらの名前空間を含むdllがあります。
あなたが試すことができます:
「プロジェクトパネル」を右クリックし、「すべて再インポート」の後にクリックします。
プラットフォーム間の切り替えが原因で発生する可能性があります。 IOS、またはデスクトップ..したがって、フォロワーは不要になったために削除されます。
私のために解決してください:Unity 5.2、Win 7、32ビット;
幸運を!
Macの場合は/Applications/Unity/Unity.app/Contents/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll
。