Unity では、フォルダー内のコンテンツが特別な目的を持っていることを示すために、いくつかのプロジェクトフォルダー名をあらかじめ用意しています。これらのフォルダーの中にはスクリプトのコンパイル順に影響を与えるものがあります。以下のフォルダー名が該当します。
これらのフォルダーの用途については、特殊なフォルダー名 を参照してください。
Unityは、プロジェクトフォルダー構造内のスクリプトファイルの場所に基づいて、4 つの異なるフェーズでスクリプトをコンパイルします。各フェーズでは、別々の C#プロジェクトファイル (.csproj) と事前定義されたアセンブリが作成されます(該当するスクリプトがないコンパイルフェーズでは、対応するプロジェクトファイルやアセンブリは作成されません)。
スクリプトが、異なるフェーズでコンパイルされた (つまり、別のアセンブリにある) クラスを参照する場合、コンパイル順はとても重要です。基本的なルールは、現在のフェーズの 後 にコンパイルされるものは参照できないということです。現在のフェーズ、またはそれ以前のフェーズでコンパイルされたものは、すべて参照可能です。
コンパイルの各フェーズは下記のとおりです。
| フェーズ | アセンブリ名 | スクリプトファイル |
|---|---|---|
| 1 | Assembly-CSharp-firstpass | Standard Assets、Pro Standard Assets、Plugins という名のフォルダー内のランタイムスクリプト |
| 2 | Assembly-CSharp-Editor-firstpass | Standard Assets、Pro Standard Assets、Plugins という名の最上位フォルダー内のあらゆる場所にある Editor という名のフォルダー内のエディタースクリプト |
| 3 | Assembly-CSharp | Editor という名のフォルダーに入っていないすべてのスクリプト |
| 4 | Assembly-CSharp-Editor | Editor という名のフォルダー内にある残りのすべてのスクリプト |
注意Standard Assets は Assets ルートフォルダー内でのみ機能します。
アセンブリ定義ファイルを作成し、独自のアセンブリを使用することによって、プロジェクト内のスクリプトを整理できます。独自のアセンブリを定義することで、無関係なコードを変更するときに再コンパイルが必要になるコードの量を減らすことができ、他のアセンブリへの依存をより詳細に制御することができます。詳細については、スクリプトのコンパイル - アセンブリ定義ファイル を参照してください。