Unity 2020.2 ベータ版では Unity セーフモードが利用可能になりました。これにより、スクリプトにコンパイルエラーがあるプロジェクトを開いたときの Unity の挙動が改善されます。
エディター起動時にコンパイルエラーが発生した場合、セーフモードに入るか問い合わせる画面が表示されます。このモードは、コンパイルエラーを解決するための最適な環境を提供するように設計されているため、プロジェクトのすべてのアセットがインポートされるのを待たずに、素早くプロジェクトを動作する状態に戻すことができます。この機能は、プロジェクトを新しい Unity バージョンにアップグレードするプロセスを簡素化およびスピードアップし、また、ライブラリフォルダに誤ったインポートアーティファクトが含まれているケースを減らすことで、大規模なプロジェクトで作業するチームを支援します。
私たちは、皆さんや社内の制作チームからのフィードバックに基づいて、Unity を使う際に受け取る体験を改善させたいと常に考えています。そうした活動の中で、改善すべきとされた領域の 1 つに、プロジェクトをアップグレードした後の最初のスクリプトのコンパイルやアセットのインポート時にエラーが検出、報告された場合の Unity の振る舞いが挙げられていました。
これを受けて、私たちは最近、起動時の Unity の挙動や、起動時に発生するコンパイルエラーをユーザーに報告する方法、また、プロジェクトを含む環境やドメインを立ち上げる最初のプロセスを改善しました。この記事では、Unity 2020.2 でこの分野の問題を解決するために行ったことを共有します。この記事をお読みになった皆さんからのフィードバックをいただければ幸いです。
実際には、多くのプロジェクトでは、後処理やカスタマイズされたスクリプト可能なインポーターのためにスクリプトが存在していたり、プロジェクト内のコードや依存しているパッケージを介して単にプレハブを正しくデシリアライズするためのスクリプトが存在していたりすることに依存しています。スクリプトやパッケージでコンパイルエラーが発生すると、それぞれのアセンブリを読み込むことができず、またコンパイルが完了しないので、そのコードを実行できません。コンパイルが完了した後、以前のバージョンの Unity では、プロジェクトを部分的にロードし、すべてのアセットがインポート済みになるまでインポート作業を続けます。プロジェクトが部分的にロードされている状態が生じることが原因で様々な問題が発生しており、今回のセーフモードの導入は、そうした問題に対処することを目的としています。
Unity 2020.2 では、起動時にコンパイルエラーが発生した場合、Unity は新しく導入されたセーフモードに入るメニューを備えたウィンドウを表示します。セーフモードでは、プロジェクトを管理し、コンパイルエラーを解決し、プロジェクト環境を正しく機能する状態に戻すことができます。
セーフモードでは、Unity は最低限のエディターのユーザーインターフェースを提供し、機能を制限することで、プロジェクトの残りの部分を開く前にコンパイルエラーを解消することに集中できるようにします。このインターフェイスには、以下のものが含まれますが、これに限定されません。
セーフモードでは、プロジェクトやそのパッケージからマネージコードが実行されることはありません。これにより、相当に壊れた状態のプロジェクトを開いた場合でも、セーフモードのエディターは常に完全に機能し、信頼性の高いものとなります。
Unity は、コンパイルエラーがなくなったことを検出すると、自動的にセーフモードを終了します。セーフモードを終了すると、プロジェクトは完全にインポートされ、エディタは通常の完全な機能を回復します。
これらの問題に対処することで、セーフモードはプロジェクトのアップグレードを行うプロセスを大幅に改善し、プロジェクトをロールバックまたはリカバリーする必要が生じるリスクを大幅に低減します。
Unity セーフモードを使用して、Unity プロジェクト内にある Vector3 変数の誤った宣言を修正する
以前のバージョンでは、バッチモードで Unity を動かしているときでも、コンパイルエラーが発生しているプロジェクトを部分的にロードして、すべてのアセットのインポートを進めていました。インポートが終了すると、デフォルトでは、コマンドライン引数で指示がない限り、エラーメッセージを表示して終了します。この挙動を Unity 2020.2 では変更しました。変更後のバッチモードでは、デフォルトでは、プロジェクトの部分的なロードとアセットのインポートを使用しなくなり、コンパイルエラーが検出されるとすぐにエラーメッセージを表示して終了するようになりました。これにより、コンパイルエラーがある場合でも、バッチモードの完了が大幅に速くなりました。この処置により、継続的インテグレーション(CI) システムがプロジェクトのアセットキャッシュサーバーに誤ったインポートのアーティファクトを格納して、プロジェクトで作業している全員に影響を与える事態の発生を防ぎます。
私たちは、Unity に新しく搭載されたセーフモード状態について、あらゆる側面に関するフィードバックを募集しています。特に、セーフモード中に使う重要だと思われる機能を見逃していないかどうかを知りたいと思っています。ぜひ、フォーラムでフィードバックをご提供ください。
Unity の R&D と QA スタッフは、リリースの安定化、機能の洗練、およびより皆さんを生産的にさせるワークフローの実現を目指して懸命に仕事をしていますが、コミュニティからのフィードバックなしにはこうしたことを実現することは不可能です。
Unity 2020.2 の開発を通じて、2020 年の重点テーマとしていたパフォーマンス、安定性、ワークフローの改善に引き続き注力しています。ベータ版にご参加いただき、今後のツールについてのご意見をお聞かせください。
Is this article helpful for you?
Thank you for your feedback!