デフォルトでは、Unity はメインエディタープロセスでアセットを 1 つずつ順番にインポートします。しかし、Unity は一部のアセットタイプに対して並列インポートもサポートしています。並列インポートは複数のプロセスを使用してアセットを同時にインポートするため、デフォルトの順番にインポートする方法よりも高速です。
並列インポートを有効にするには、Edit > Project Settings > Editor の順に移動し、Asset Pipeline セクションの下にある Parallel Import チェックボックスを有効にします。
Unity の Parallel Import (並列インポート) 機能は、特定の種類のアセットのみをサポートしています。これは、標準的なアセットデータベースの更新を実行する場合 (エディターが Project フォルダー内の新しいまたは変更されたアセットを検出し、自動的にそれらをインポートする) にのみ適用されます。
Unity が並行インポートできる具体的なアセットの種類は以下の通りです。
その他の種類のアセットは、アセットデータベースの更新時に常に順番にインポートされます。
この設定は、Texture または Model アセットをインポート、更新、または作成するためにそれらを使用する場合、一部の Asset Database API メソッドでも適用されます。それらは以下のとおりです。
並列インポートは別々のプロセスで動作するため、スクリプトインポーターコードの副作用もまた、メインエディタープロセスではなく各プロセスで発生します。別のプロセスで発生する副作用は、予期しない問題を引き起こす可能性があります。例えば、ワーカースレッドでインポート中に C# クラスの静的変数を変更した場合、その変更は自動的にエディターのメインスレッドで実行されるコードには表示されません。
インポートのために書いたコードは常に自己完結型で決定論的であり、実行するコンテキストを変更すべきではありません (例えば、エディターの設定を変更したり、ディスク上に新しいアセットを作成するなど)。これらのルールに従うことで、インポーターコードの並列スレッドの問題を回避できます。また、インポート結果が常に一貫しており、エディターは常にキャッシュされたアーティファクトを使用し、アセットを不必要に再インポートすることがないようにします。
Asset Pipeline の設定には、インポートワーカープロセスの動作を制御するための 3 つの設定があります。これらの設定は、プロジェクトごとに異なります。
Unity によって新しいプロジェクトに設定される Desired Import Worker Count のデフォルト値を制御することもできます。これを行うには、Preferences > Asset Pipeline > Import Worker Count % の順に移動します。
新しいプロジェクトを作成するとき、Unity は Import Worker Count % 値を使用して、システムで利用可能な論理コア数のパーセンテージに対応するプロジェクトの Desired Import Worker Count 値を割り当てます。
例えば、システムに 16 個の論理コアがあり、この設定が 25% に設定されている場合、新しいプロジェクトの Desired Import Worker Count は 4 になります。この値をあまり高く設定すると、インポートワーカープロセスは他のプロセスやファイルの読み書きなどのシステムリソースと競合し上回る必要があります。25% のデフォルト値は、ほとんどの状況に適しています。