今回は前回の応用で、プロジェクト内に必要なアセットが無い場合、AssetStoreからダウンロードしてもらう機能を作成してみました。
Unity プロジェクトの中に、要求するアセット群が含まれない場合、該当ファイルのあるアセットを表示する奴 pic.twitter.com/Fj6xZ93atp
— 椿 (@tsubaki_t1) 2015, 7月 17
この機能の紹介はまた次回するとして、今回はエラーが発生した際でもエディタ拡張を使用する方法についてです。
にコンパイルできないコードがプロジェクトに含まれる場合、ソースコードを正確に解釈する事が出来ないので、どう動いてよいのか分からず動作しません。
Unityの場合、起動時にコンパイルエラーが含まれている場合、エディタのInspectorにこんな感じのUIが表示されたりします。
This associated script can not be loaded. Please fix any compile errors and assign a valid script.
(関連付けられたスクリプトをロードすることはできません。コンパイルエラーを修正し、有効なスクリプトを割り当てるしてください)
で、今回作成した「Unityプロジェクト内にアセットが足りない場合はAssetStoreから持ってくるアセット」ですが、この「足りないアセット」にソースコードが含まれてしまっていた場合、プロジェクト起動時にコンパイルエラーを起こし、エディタ拡張が動作しません。
そこで、コンパイルエラー時でもエディタ拡張を動作させる方法についてです。
事前にコンパイルしてしまう
はい、これに尽きます。他のエラーが原因でコンパイルが通らないのであれば、すでにコンパイル済みのDLLとしてエディタに配置してやれば問題ない訳です。
まあ事前にビルドしてしまうためプラットフォーム依存コンパイルが使いにくくなる、バグが発生した時に追いにくい等の問題はありますが、動作しない問題は回避出来るので、これはこれで。
一旦コンパイルエラーの原因を取り除く
一度でもコンパイルが通れば、エディタ拡張が使用できるようになります。正確には、最後にコンパイルが通った時のエディタ拡張が動作します。
なので無理やりコンパイルエラーになるファイルをプロジェクト外に退避し、コンパイルエラーを通して戻す案も実はあったりします。