ドキュメント

Unity Engine

Unity Engine

セーフモード

Unity のセーフモードについて説明します。セーフモードは、プロジェクトにコンパイルエラーがある場合に Unity エディターが開始するモードです。
読み終わるまでの所要時間 20 分最終更新 3日前

概要

Unity のセーフモードは、スクリプトコンパイルエラーが発生したプロジェクトを開いたときに Unity エディターが開始できるモードです。セーフモードは、コンパイルエラーを解決するための最適な環境を提供するように設計されており、プロジェクトをすばやく機能ステートに戻すことができます。
セーフモードでは、Unity は機能が制限された最小限のエディターユーザーインターフェースを提供します。スクリプト関連のアセットのみをインポートし、スクリプト以外のアセット (モデル、マテリアル、テクスチャ、プレハブなど) のインポートは禁止します。これは、セーフモードはコンパイルエラーの解決のみを目的としたコンテンツ制作向けではないためです。
セーフモードでは、プロジェクトまたはそのパッケージからマネージコードを実行できません。つまり、エディタースクリプト、アセットポストプロセッサー、スクリプトインポーターなどの独自のスクリプトは実行されません。セーフモードでは、アセンブリオーバーライド、および Burst アナライザーと Roslyn アナライザーも無効になります。これにより、セーフモードのエディタは、非常に破損したステートのプロジェクトを開いた場合でも、常に完全に機能し、信頼性があります。
Unity は、コンパイル エラーがなくなったことを検出すると、自動的にセーフ モードを終了します。セーフモードが終了すると、Unity はプロジェクトを完全にインポートし、エディターは法線上の全機能を復元します。

コンパイルエラーの一般的な原因

コンパイルエラーが発生する可能性がある一般的なシナリオは、次のような場合に発生します。
  • プロジェクトを古いバージョンの Unity から新しいバージョンにアップグレードします。
  • プロジェクトを作成したバージョンとは異なるバージョンの Unity で開く。
  • 欠落しているパッケージ、または間違ったバージョンのパッケージでプロジェクトを開く。
  • 独自のスクリプトでエラーが発生したプロジェクトを開きます。
  • Version Control でプロジェクトを開き、最後にプルした変更にコンパイルエラーが含まれている。
コンパイルエラーが発生したプロジェクトをセーフモードなしで開くと、さまざまな問題が発生する可能性があります。例えば、プロジェクト内のパッケージが正しくロードまたは機能せず、アセットが正しくインポートされず、ライブラリまたはキャッシュサーバーに正しくキャッシュされないアーティファクトが発生する可能性があります。
このような状況では、通常、プロジェクトの残りの部分のインポートを待たずにエラーを解決できます。セーフモードでは、これらのスクリプト関連の問題を自分で解決したり、Version Control を使用して、プロジェクトの完全なインポートを待たずにエラーを解決する新しいバージョンにプロジェクトを更新するためのツールが提供されます。

セーフモードの開始

コンパイルエラーが発生したプロジェクトを開くと、エディターはセーフモードを開始するかどうかを尋ねるダイアログを表示します。

The Enter Safe Mode? dialog prompts you to enter Safe Mode when you open a project with compilation errors

この時点で 3 つの選択肢があります。
  • セーフモードに入る
  • エラーを無視してプロジェクトを開く
  • Unity 終了
ほとんどの場合、Enter Safe Mode を選択して、プロジェクトのエラーを解決します (または、Version Control で作業している場合は、エラーの修正を含む変更をプルします)。セーフモードは、コンパイルエラーを解決するために最適な環境を提供します。そのため、Unity がプロジェクトの残りの部分をインポートする前に、プロジェクトを機能ステートにすばやく戻すことができます。
ただし、セーフモードにしたくない場合があります。その場合は、Unity を終了するか、エラーを無視します。
注
_このダイアログは 編集 > Preferences > アセット パイプライン > Show Enter Safe Mode Dialog で使用不可にすることができます。このダイアログを使用不可にすると、コンパイルエラーが発生したプロジェクトを開くと、Unity は自動的にセーフモードに入ります。

セーフモードを開始せずに終了する

セーフモードはコンパイルエラーの修正専用に設計されています。Unityプロジェクトでチームの一員として作業しているが、エラーの原因となっているスクリプトに責任がなく、どうすればよいかわからない場合は、ダイアログで終了を選択し、チームのプログラマーに接触してアドバイスを受ける必要があります。

エラーを無視してインポートを続行します

プロジェクトを使用可能なステートにしておく必要がない場合があります (例えば、古いプロジェクトを開いて一部のパーツをコピーしたり、単に構成を調べたりする場合)。この場合、エラーを無視して壊れたステートでプロジェクトを開くことができます。
Ignore (無視) を選択し、後でセーフモードでプロジェクトを開く場合は、Unity を一旦閉じてから再度開くと、Enter Safe Mode (セーフモードに入る) ダイアログに再度アクセスできます。

コンパイルエラーを無視することの影響

エラーを無視することを選択した場合、Unity は残りのアセットのインポートを続行し、プロジェクトを完全に開きます。ここで考えられる影響は以下のとおりです。
  • プロジェクトが使用可能なステートになっていない可能性があります。エラーが解決するまで、再生モードにしたり、プロジェクトのビルドを作成できないことがあります。また、プロジェクト内のパッケージが正しくロードされない、またはまったくロードされない場合があります。
  • Unity では、起動時に 1 回、プロジェクトのコンパイルエラーを解決した後の 2 回、アセットのインポートが必要な場合があります。これにより、プロジェクトを使用可能なステートでロードする時間が長くなります。
  • プロジェクトでスクリプタブルレンダーパイプラインを使用すると、レンダーパイプラインがロードされず、エラーシェーダーなどの視覚的な問題が発生する場合があります。
  • スクリプトコンパイルエラーは、プロジェクト内で二次的なエラーの原因となる場合があります。例えば、プロジェクト内のスクリプトインポーターがコンパイルエラーのためにロードできない場合、アセットは誤ったステートでインポートされる可能性があります。
セーフモードは、これらの問題をすべて回避するヘルプとなるように設計されています。

セーフモードのエディター

セーフモードでは、Unity は機能が制限された最小限のエディターインターフェースを提供します。

The Unity Editor in Safe Mode

Unity エディターでは、エディター上部のツールセクションにセーフモードのバナーが表示され、標準のエディターツールバーに置き換わります。ツールバーにはセーフモードであることが示され、残りのエラーを無視してセーフモードを終了できる終了セーフモードボタンが表示されます。バナーは、プロジェクトでプレビューパッケージが使用されているかどうかも示します。
Unity エディターはセーフモードでのコードエディターとのインテグレーションが維持されるため、スクリプトアセットやコンソールエラーをダブルクリックして関連するスクリプトを開くことができます。また、「Assets」メニューから C# プロジェクトを開くこともできます。また、バージョン管理システムとのインテグレーションも維持されます。

セーフモードの制限された Windows セット

セーフモードでは、一部の Windows ウィンドウがエディタに表示されます。これらは、次のとおりです。
  • コンソール ウィンドウ
  • Project ウィンドウ
  • Inspector ウィンドウ
  • Package Manager ウィンドウ
コンパイルエラーの修正に関連するため、これらのWindowsのみ使用可能です。セーフモードで他の Windows は使用できません。

セーフモードのエディタメニュー

セーフモードでは、エディタのメインメニューで使用できるオプションは限られたセットに制限されます。スクリプトの操作に関連するメニュー オプションのみを表示して選択できます。他のコンテンツの作成と操作に使用する通常のオプションは使用できません。例えば、シーンを作成または開いたり、プリミティブ形状、ライト、カメラなどのスクリプト以外のアセットを作成したりすることはできません。
GameObject

?

メニューと コンポーネント メニューは存在せず、ウィンドウメニューは限られた一群の Windows のみを提供します。

The restricted Editor Menu as it appears in Safe Mode, displaying the available options for creating assets.

セーフモードの Project ウィンドウ

セーフモードでは、Project ウィンドウはセーフモード外の法線動作と比べて、いくつかの機能的な違いがあります。
主な違いは、コンパイル関連のアセットしか選択できないことです。他のアセットタイプは選択できません。それらは Project ウィンドウにグレーアウトされたエントリーとして表示されたままですが、選択や編集はできません。
具体的には、対話するコンパイル関連のアセットタイプは次のとおりです。
  • C# ファイル (.cs)
  • DLL ファイル (.dll)
  • アセンブリ定義 (.asm)
  • 反応ファイル (.rsp)
  • ルールセットファイル (.ruleset)
また、選択できないアセットのアイコンには、アセットのコンテンツのプレビューは表示されません。代わりに、アセットのタイプを表すジェネリックアイコンが表示されます。

The Project window displays generic icons for non-selectable assets.

作成 (+) メニューボタンが無効になり、Project ウィンドウのコンテキストメニューで使用できるオプションが少なくなります。

The create (+) menu button in the project window, disabled in Safe Mode

セーフモードの終了

すべてのコンパイルエラーが解決されると、Unity は自動的にセーフモードを終了します。Unity はプロジェクトを開き、アセットをインポートします。
コンパイルエラーが残っている状態でセーフモードを終了するには、セーフモードツールバーの**「セーフモード終了**」ボタンを選択します。これは推奨されません (「 コンパイルエラー無視の影響 」を参照)。Unity は決定を確認するダイアログを表示します。

The Exit Safe Mode button in the Safe Mode toolbar

プロジェクトにエラーが残っている状態でセーフモードを終了し、後でセーフモードに戻りたい場合は、Unity を一旦閉じてから再度開くと、Enter Safe Mode ダイアログに再度アクセスできます。

バッチモードでのセーフモード

バッチモードでは、プロジェクトにコンパイルエラーがある場合、
-ignoreCompilerErrors
コマンドライン引数を使用しない限り、Unity は自動的に終了します。