Unity はフォルダー内のコンテンツが特別な目的を持っていることを示すためにいくつかのプロジェクトフォルダー名をリザーブしています。そういったフォルダーの中にはスクリプトのコンパイル順に影響を与えるものがあります。それらのフォルダー名は以下のとおりです。
これらのフォルダーの用途については、特殊なフォルダー名 を参照してください。
スクリプトのコンパイルには 4フェーズあります。どのフェーズでコンパイルされるかは、その親フォルダーで決まります。
これは、スクリプトが、その他のスクリプトによって定義されるクラスを参照している場合に重要になってきます。基本的には、現在のフェーズの 後に来る フェーズにおいてコンパイルされるものを参照することはできないルールになっています。現在のフェーズやそれ以前のフェーズにおいてコンパイルされるものは完全に使用可能になります。
ある言語で書かれたスクリプトが別の言語で定義されたクラスを参照しなければならない場合(例えば UnityScript ファイルが C# スクリプトで定義されたクラスの変数を宣言している場合など)は、別の状況が起こってきます。この場合は、参照されているクラスは、それより早いフェーズでコンパイルされている必要があります。
コンパイリングの各フェーズは下記のとおりです。
フェーズ 1: Standard Assets 、 Pro Standard Assets 、 Plugins のフォルダーに入ったランタイムスクリプト。 フェーズ 2: Standard Assets 、 Pro Standard Assets 、 Plugins のフォルダー内にある Editor フォルダーのエディタースクリプト。 フェーズ 3: Editor フォルダーに入ったもの以外のすべてのスクリプト。 フェーズ 4: 残りのすべてのスクリプト (つまり、Editor フォルダー内のスクリプト)。
このコンパイル順の重要さが現れるよくある例は、UnityScript ファイルが C# で定義されたクラスを参照する必要がある場合です。これは C# ファイルを Plugins フォルダー内に配置し、UnityScript ファイルを非特殊フォルダー内に配置すれば可能です。こうしないと、C# クラスが見つからないというエラーが発生します。
注: Standard Assets は Assets ルートフォルダー内でのみ機能します。