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