ノート: このセクションのアドバイスには、リリース順に従ってください。例えば、プロジェクトを 2020 から 2022 にアップグレードする必要がある場合は、2022 年のアップグレードガイドを読む前に、2021 年のアップグレードガイドを読んで変更すべき点がないかどうかを確認します。
このページでは、2019 バージョンから 2020 LTS にアップグレードする際に、既存のプロジェクトに影響を与える可能性のある Unity 2020 LTS バージョンの変更点を記載しています。
2020 LTS は 2020.3 と同じです。
Unity は、プロジェクトにインポートした 3D オブジェクトの Mesh UV を変更する場合があります。
Unity は、インポートされたすべてのメッシュの頂点位置を変換し、Unity のユニットで自動的にスケールします。
Unity 2020.1 からは、Generate Lightmap UVs を有効にすると、変換されたメッシュの頂点を使用して ライトマップ UV が生成 されるようになりました。Unity 2020.1 以前は、自動位置変換の前に、インポートされたオリジナルのメッシュの頂点位置を使用してライトマップ UV マップを生成していました。
頂点変換後に生成された UV は、インポートしたオブジェクトの元の形状やスケールに、より正確に一致します。 ページ始めに戻る
Unity 2020.1 からは、プロジェクト内のすべてのアセットバンドルに対して異なるハッシュを生成するようになりました。これにより、同じコンテンツでパスが異なるものも含め、すべてのバンドルがビルドされるようになります。 ページ始めに戻る
Unity 2020.1 からは、アップグレードするプロジェクトに multiplayer HLAPI を使用するスクリプトがある場合、Package Manager から multiplayer HLAPI パッケージをインストールします。
Unity 2019.1 から 2019.4 までは、Unity 2018.4 以前で作成したプロジェクトをアップグレードすると、自動的に multiplayer HLAPI パッケージがインストールされました。 ページ始めに戻る
Unity のプログレッシブライトマッパーは、CPU ライトマッパーと GPU ライトマッパーで構成されています。
Unity 2020.1 から、GPU ライトマッパーは LOD ベイクをサポートします。
CPU ライトマッパーは同じベイクアルゴリズムを使用し、これにより Unity は利用可能なすべての CPU コアを使用して、LOD 値が 0 より大きいシーンでのベイク時間をより速くします。
シーンの LOD をアップグレードするには、ベイクされたライトマップを消去して、再生成します。以下のようにこれを行います。
Adaptive Performance を 1.0 から 2.0 に更新するには、Adaptive Performance アップグレードガイド を参照してください。 ページ始めに戻る
MacOS Standalone Xcode プロジェクトのビルドパスの選択が変更されました。現在では、目的のディレクトリへのパスを提供する必要があり、.xcodeproj と付随するファイルは、ターゲットディレクトリの内部に作成されます。 MacOS のビルドフォルダーは、プロジェクトディレクトリの中には置けません。 Xcode のプロジェクト構造 のマニュアルページを参照してください。
Force Field プロパティの一貫した動作を保証するために、Unity は 30fps の参照フレームレートをシミュレーションの基準として使用するようになりました。 アプリケーションが異なるフレームレートを使用する場合、この変更は以下の Force Field プロパティに影響を与える可能性があります。
これらの設定による動作が以前のバージョンの Unity と異なる場合は、値を調整してください。
UnityEngine.UI.Graphic
は CanvasRenderer
コンポーネントの RequireComponent
属性を持たなくなりました。Graphic を継承して UGUI のキャンバスにレンダリングするユーザー作成のクラスを更新するには、以下の RequireComponent
属性を加えてください。
using UnityEngine;
[RequireComponent(typeof (CanvasRenderer))]
public class exampleClass: Graphic
{
...
}
Code Optimization の導入により、Code Coverage パッケージ の動作が変更されます。2020LTS のプロジェクトで Code Coverage パッケージを引き続き使用するには、デバッグモードでスクリプトをコンパイルするように Code Optimization を設定してください。デバッグモードは C# のデバッグを可能にし、正確なコードカバレッジ結果を得るために必要です。
Code Optimization がデバッグモードに設定されていることを確認するには、以下のいずれかを実行します。
CompilationPipeline.codeOptimization = CodeOptimization.Debug
を設定します。-debugCodeOptimization
を渡します。このドキュメントは、Unity 2020 リリースより前のバージョンの Unity を使用する既存の AR/VR プロジェクトをアップグレードするためのガイドを提供します。
既存のプロジェクトを Unity 2020 リリース以降にアップグレードする場合、非推奨の XR インテグレーション (以前は Player/XR Settings にあった) は無効になったと通知されます。
AR/VR を有効にするには、Project Settings の XR Plug-in Management を使用し、ターゲットプラットフォームを選択します。
プラットフォーム | ビルドターゲット | プラグインプロバイダー |
---|---|---|
Oculus Quest | Android | Oculus |
Oculus Rift & Rift S | デスクトップ | Oculus |
Windows Mixed Reality VR | UWP | Windows Mixed Reality |
プラットフォーム | ビルドターゲット | プラグインプロバイダー |
---|---|---|
ARCore デバイス | Android | ARCore |
ARKit デバイス | iOS | ARKit |
HoloLens | UWP | Windows Mixed Reality |
Magic Leap One | Lumin | Magic Leap |
プロジェクトのレンダリングと品質設定が最適であることを確認してください。以下の表は、ターゲットプラットフォーム別の推奨設定の詳細です。
プラットフォーム | グラフィックス API | ステレオレンダリングモード |
---|---|---|
Oculus Quest | OpenGL ES 3.0 | Multiview |
Oculus Rift & Rift S | DX11 | シングルパスでインスタンス化 |
Windows Mixed Reality VR | DX11 | シングルパスでインスタンス化 |
プラットフォーム | グラフィックス API | ステレオレンダリングモード |
---|---|---|
ARCore デバイス | OpenGL ES 3.0 | 該当なし |
ARKit デバイス | Metal | 該当なし |
HoloLens | DX11 | シングルパスでインスタンス化 |
Magic Leap One | OpenGL ES 3.2 | シングルパスでインスタンス化 |
ノート: “Single Pass” はレンダリングモードオプションではなくなりました。なぜなら、“Single Pass Instanced” の方がパフォーマンスが高いためです。“シングルパス” から “シングルパスインスタンシング” にアップグレードする場合、プロジェクト内のカスタムシェーダーの更新が必要な場合があります。
2020.1 では、ビルトインレンダーパイプライン、ユニバーサルレンダーパイプライン、HD レンダーパイプラインがすべてサポートされています。最新のスクリプタブルレンダーパイプラインを使用するメリットはありますが、このアップグレードプロセスでは必須条件ではありません。
ノート: サードパーティアセットおよび/またはカスタムシェーダーを使用している場合、“シングルパスインスタンシング” に対応したシェーダーでのアセットの更新が必要になる場合があります。
XR Interaction Toolkit を使用する場合、カメラトラッキングの変更は必要ありません。
カメラトラッキングにサードパーティ製のツールキット (OVRCameraRig など) を使用している場合は、最新バージョンにアップデートしていることを確認してください。サードパーティ製ツールの最新バージョンにアップグレードすると、スクリプトエラーが発生する可能性があります。サードパーティのドキュメントを参照してください。
カメラトラッキングに Tracked Pose Driver を使用している場合は、移行に関するガイド を参照してください。
Unity がサポートするプラットフォームで開発されたツールキット(Oculus Integration パッケージ、MRTK、MLTK) を使用する場合は、最新のものを使うようにしてください。なお、サードパーティ製ツールの最新版へのアップグレードは、アップグレードに関連するスクリプトエラーを引き起こす可能性があり、それらのツールキットに対応するドキュメントの参照が必要な場合があります。
XR Plug-in Management をインストールする前に、アップグレードに関連するスクリプトエラーが発生する可能性があります。
OpenVR と Google Cardboard XR Plug-in は、それぞれ Valve と Google によって開発保守されています。両プラットフォームのインストール手順のリンクは、Unity の ドキュメント に表示されています。
はい、サポートされたプラットフォームのインテグレーションは、Unity の入力システムと互換性があります。
はい、サポートされたプラットフォームのインテグレーションは、ユニバーサルレンダーパイプラインと HD レンダーパイプラインの両方に対応しています。
XR Interaction Toolkit はまだプレビュー版です。2020.1 でプレビューパッケージを表示するには、Project Settings の Package Manager タブを使用して、それを有効にする必要があります。有効にすると、Package Manager の Unity Registry にプレビューパッケージが表示されます。
Play in Editor への対応は、スタンドアロンサポートがあるプロバイダーに対してのみ機能します。もし、プロバイダーが XR Plug-in Management のプロバイダー選択 UI のスタンドアロンセクションにリストされていない場合、Play in Editor は動作しません。プロバイダーが Play in Editor サポートを行う他の方法をサポートしている可能性がありますので、プロバイダーのドキュメントを確認してください。
“シングルパスインスタンシング” のほうがパフォーマンスが高いため、“シングルパス” は 2020.1 ではサポートされなくなりました。プロジェクトで “シングルパス” レンダリングを使用していた場合は、プロジェクトのシェーダーの更新が必要な場合があります。“シングルパス” 用のカスタムシェーダーを使用するサードパーティのライブラリも更新が必要な場合があります。“シングルパス” から “マルチパス” へのアップグレードを選択するとシェーダーは動作します。ただし、最大のパフォーマンスを得るために “シングルパスインスタンシング” をターゲットにすることをお勧めします。
グラフィックス API は、Player settings (“Edit” > “Project Settings” > “Player”) で設定できます。
レンダリングモードは、Project Settings の XR Plug-in Management でプロバイダー別に設定できます。
renderScale は除かれ、eyeTextureResolutionScale に置き換えられています。2019.3 以降は、これはスクリプトアップデーターのタスクとなっています。2019.3 より前の Unity バージョンからアップグレードする場合は、手動で renderScale を eyeTextureResolutionScale に置き換える必要があります。
デバイスの入力を検出する前に、ヘッドセットを検出する必要があります。テスト時によくある問題として、多くの人がインタラクションのデバッグ中に、ヘッドセットをテーブルの上に置いたままにしてしまうことがあります。ヘッドセットを装着する (または、ヘッドセット内の近接センサーがアクティブになる) までは、コントローラーは認識されません。デバイスから何も入力されない場合は、アプリケーションを起動、または近接センサーをアクティブにしてから、ヘッドセットを装着してください。
ARKit は、カメラの FOV を変更するオプションを提供していません。