【Unity】スクリプトのコンパイル順

Unityではフォルダによりスクリプトのコンパイル順が決められています。その順番を知らないと、思ったようにスクリプトにアクセスできず困ったことになります。

スクリプトのコンパイル順番

各フォルダ内のスクリプトは、下記順番でコンパイルされます。

(1)Standard Assets・Pro Standard Assets・Pluginsフォルダ
(2)Standard Assets/Editor・Pro Standard Assets/Editor・Plugins/Editorフォルダ
(3)その他のフォルダ(Editor以外)
(4)Editorフォルダ

基本的に、先にコンパイルされたスクリプトは、後にコンパイルされたスクリプトからアクセス可能です。逆はできません。

また、Editorフォルダ内のスクリプトは、Editorフォルダ以外からはアクセスできません。逆は可能です。

それぞれのフォルダ内のスクリプト同士がアクセス可能か、以下の表にまとめてみました。

各フォルダ内、スクリプト間でのアクセス可否表

ABCDE F
A××××
B × ×××
C××
D××
E × × ×
F

A:Standard Assets B:Plugins C:Standard Assets/Plugins D:Plugins/Editor E:その他 F:Editor

縦軸:アクセス元スクリプトの保存フォルダ
横軸:アクセス先スクリプトの保存フォルダ

※SendMessageを使うと、この表を無視してアクセスできる部分もある。
※Pro Standard Assetsは自分の環境で検証できないため省略。

参考 特殊フォルダーとスクリプトのコンパイル順UNITY DOCUMENTATION

特殊フォルダ

特殊フォルダの簡単な説明です。

Standard Assets

Unityの標準アセット(追加機能)が保存されるフォルダ。

Pro Standard AssetsはPro版でのみ使えます。Free版、Plus版では使えません。

標準アセットは、インストーラから追加でインストールできていたのですが、2018.2からできなくなっています。どうやらPackage Managerに本格的に移行していくようです。

Plugins

iOSやAndoridなどのネイティブプラグインに関連するファイルが保存されるフォルダです。Assetsフォルダ直下に1つだけ配置可能で、Admobやnendなどの広告のSDKはここに保存します。

プラットフォームフォルダ
AndroidPlugins/Android
iOSPlugins/iOS

Resources

実行時、シーン上にないプレハブや画像などを、パスを指定して読み込むことができます。複数設置可能で、凄く便利です。便利だからと何でも突っ込むと、メモリが圧迫されたり、起動が遅くなる原因になるので要注意。Unityの開発元は、利用を推奨しておらず、AssetBundleとAddressable推し。

Edior

開発環境用のフォルダで、実行時には参照できません。ビルドにも含まれません。Editor拡張用のスクリプトや画像などを保存します。

StreamingAssets

ファイルをそのままの形式でビルドに含める場合に使います。

SNS連携用のプラグインSocial Connectorは、このフォルダに保存した画像を、Twitterやfacebookへ投稿する際の添付画像として利用します。

最後に

スクリプトのコンパイル順番と特殊フォルダの役割を整理しておくと、スクリプト同士のアクセス可否に困らなくなります。