Version: 2021.3
Unity 2021 LTS へのアップグレード
Unity 2019 LTS へのアップグレード

Unity 2020 LTS へのアップグレード

ノート: このセクションのアドバイスには、リリース順に従ってください。例えば、プロジェクトを 2018 年から 2020 年にアップグレードする必要がある場合、2020 年のアップグレードガイドを読む前に、2019 年のアップグレードガイドを読んで変更すべき点がないかどうかを確認します。

このページでは、2019 バージョンから 2020 LTS にアップグレードする際に、既存のプロジェクトに影響を与える可能性のある Unity 2020 LTS バージョンの変更点を記載しています。

2020 LTS2020.3 と同じです。

このページに含まれる内容


すべてのメッシュの頂点は、UV アンラップのために変換されます

Unity は、プロジェクトにインポートした 3D オブジェクトの Mesh UV を変更する場合があります。

Unity は、インポートされたすべてのメッシュの頂点位置を変換し、Unity のユニットで自動的にスケールします。

Unity 2020.1 からは、Generate Lightmap UVs を有効にすると、変換されたメッシュの頂点を使用して ライトマップ UV が生成 されるようになりました。Unity 2020.1 以前は、自動位置変換の前に、インポートされたオリジナルのメッシュの頂点位置を使用してライトマップ UV マップを生成していました。

頂点変換後に生成された UV は、インポートしたオブジェクトの元の形状やスケールに、より正確に一致します。 ページ始めに戻る

アセットバンドルハッシュはすべて異なるため、すべてのバンドルがビルドされます

Unity 2020.1 からは、プロジェクト内のすべてのアセットバンドルに対して異なるハッシュを生成するようになりました。これにより、同じコンテンツでパスが異なるものも含め、すべてのバンドルがビルドされるようになります。 ページ始めに戻る

プロジェクトのアップグレードで、multiplayer HLAPI パッケージは自動的にインストールされません

Unity 2020.1 からは、アップグレードするプロジェクトに multiplayer HLAPI を使用するスクリプトがある場合、Package Manager から multiplayer HLAPI パッケージをインストールします。

Unity 2019.1 から 2019.4 までは、Unity 2018.4 以前で作成したプロジェクトをアップグレードすると、自動的に multiplayer HLAPI パッケージがインストールされました。 ページ始めに戻る

プログレッシブライトマッパーによる LOD ベイクの改善

Unity のプログレッシブライトマッパーは、CPU ライトマッパーと GPU ライトマッパーで構成されています。

Unity 2020.1 から、GPU ライトマッパーは LOD ベイクをサポートします。

CPU ライトマッパーは同じベイクアルゴリズムを使用し、これにより Unity は利用可能なすべての CPU コアを使用して、LOD 値が 0 より大きいシーンでのベイク時間をより速くします。

シーンの LOD をアップグレードするには、ベイクされたライトマップを消去して、再生成します。以下のようにこれを行います。

  1. Unity エディターで、 Window > Rendering > Lighting Settings の順に開きます。
  2. Debug Settings で、Generate Lighting ボタンのドロップダウンメニューを選択し、Clear Baked Data を選択します。
  3. Generate Lighting を選択します。

ページ始めに戻る

Adaptive Performance の変更

Adaptive Performance を 1.0 から 2.0 に更新するには、Adaptive Performance アップグレードガイド を参照してください。 ページ始めに戻る

Xcode プロジェクト生成

MacOS Standalone Xcode プロジェクトのビルドパスの選択が変更されました。現在では、目的のディレクトリへのパスを提供する必要があり、.xcodeproj と付随するファイルは、ターゲットディレクトリの内部に作成されます。 MacOS のビルドフォルダーは、プロジェクトディレクトリの中には置けません。 Xcode のプロジェクト構造 のマニュアルページを参照してください。

ページ始めに戻る

パーティクルシステムの Force Field の変更

Force Field プロパティの一貫した動作を保証するために、Unity は 30fps の参照フレームレートをシミュレーションの基準として使用するようになりました。 アプリケーションが異なるフレームレートを使用する場合、この変更は以下の Force Field プロパティに影響を与える可能性があります。

  • Gravity
  • Rotation
  • Vector Fields

これらの設定による動作が以前のバージョンの Unity と異なる場合は、値を調整してください。

ページ始めに戻る

UGUI Graphic クラスの変更

UnityEngine.UI.GraphicCanvasRenderer コンポーネントの RequireComponent 属性を持たなくなりました。Graphic を継承して UGUI のキャンバスにレンダリングするユーザー作成のクラスを更新するには、以下の RequireComponent 属性を加えてください。

using UnityEngine;

[RequireComponent(typeof (CanvasRenderer))]
public class exampleClass: Graphic
{
  ...
}

ページ始めに戻る

Code Optimization を継続して使用するために、コード最適化を設定

Code Optimization の導入により、Code Coverage パッケージ の動作が変更されます。2020LTS のプロジェクトで Code Coverage パッケージを引き続き使用するには、デバッグモードでスクリプトをコンパイルするように Code Optimization を設定してください。デバッグモードは C# のデバッグを可能にし、正確なコードカバレッジ結果を得るために必要です。
Code Optimization がデバッグモードに設定されていることを確認するには、以下のいずれかを実行します。

  • エディターでデバッグモードに切り替えます (右下の バグアイコン > Switch to debug mode を選択)。
  • CompilationPipeline API を使用して、CompilationPipeline.codeOptimization = CodeOptimization.Debug を設定します。
  • コマンドラインに -debugCodeOptimization を渡します。

ページ始めに戻る

AR/VR プラットフォームサポート

このドキュメントは、Unity 2020 リリースより前のバージョンの Unity を使用する既存の AR/VR プロジェクトをアップグレードするためのガイドを提供します。

プロジェクト設定で AR/VR を有効にする

既存のプロジェクトを Unity 2020 リリース以降にアップグレードする場合、非推奨の XR インテグレーション (以前は Player/XR Settings にあった) は無効になったと通知されます。

アセットインポート時、Unity エディター起動前
アセットインポート時、Unity エディター起動前

AR/VR を有効にするには、Project Settings の XR Plug-in Management を使用し、ターゲットプラットフォームを選択します。

ノート: XR Plug-in Management をインストールする前に、アップグレードに関連するスクリプトのエラーを修正することをお勧めします。
ノート: XR Plug-in Management をインストールする前に、アップグレードに関連するスクリプトのエラーを修正することをお勧めします。

VR

プラットフォーム ビルドターゲット プラグインプロバイダー
Oculus Quest Android Oculus
Oculus Rift & Rift S デスクトップ Oculus
Windows Mixed Reality VR UWP Windows Mixed Reality

拡張現実 (AR)

プラットフォーム ビルドターゲット プラグインプロバイダー
ARCore デバイス Android ARCore
ARKit デバイス iOS ARKit
HoloLens UWP Windows Mixed Reality
Magic Leap One Lumin Magic Leap

最適なプレイヤー設定を使用する

プロジェクトのレンダリングと品質設定が最適であることを確認してください。以下の表は、ターゲットプラットフォーム別の推奨設定の詳細です。

VR

プラットフォーム グラフィックス API ステレオレンダリングモード
Oculus Quest OpenGL ES 3.0 Multiview
Oculus Rift & Rift S DX11 シングルパスでインスタンス化
Windows Mixed Reality VR DX11 シングルパスでインスタンス化

拡張現実 (AR)

プラットフォーム グラフィックス 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) を使用する場合は、最新のものを使うようにしてください。なお、サードパーティ製ツールの最新版へのアップグレードは、アップグレードに関連するスクリプトエラーを引き起こす可能性があり、それらのツールキットに対応するドキュメントの参照が必要な場合があります。

よくある質問

Project Settings で XR Plug-in Management をインストールできないのはなぜですか

XR Plug-in Management をインストールする前に、アップグレードに関連するスクリプトエラーが発生する可能性があります。

XR Plug-in Management に OpenVR と Google Cardboard がないのはなぜですか

OpenVR と Google Cardboard XR Plug-in は、それぞれ Valve と Google によって開発保守されています。両プラットフォームのインストール手順のリンクは、Unity の ドキュメント に表示されています。

Unity の入力方式はサポートされていますか

はい、サポートされたプラットフォームのインテグレーションは、Unity の入力システムと互換性があります。

ユニバーサルレンダーパイプラインと HD レンダーパイプラインはサポートされていますか

はい、サポートされたプラットフォームのインテグレーションは、ユニバーサルレンダーパイプラインと HD レンダーパイプラインの両方に対応しています。

Package Manager で XR Interaction Toolkit を表示できないのはなぜですか

XR Interaction Toolkit はまだプレビュー版です。2020.1 でプレビューパッケージを表示するには、Project Settings の Package Manager タブを使用して、それを有効にする必要があります。有効にすると、Package Manager の Unity Registry にプレビューパッケージが表示されます。

私のプロバイダーでは、なぜ Play in Editor が機能しないのですか

Play in Editor への対応は、スタンドアロンサポートがあるプロバイダーに対してのみ機能します。もし、プロバイダーが XR Plug-in Management のプロバイダー選択 UI のスタンドアロンセクションにリストされていない場合、Play in Editor は動作しません。プロバイダーが Play in Editor サポートを行う他の方法をサポートしている可能性がありますので、プロバイダーのドキュメントを確認してください。

“シングルパス”レンダリングモードが使えないのはなぜですか

“シングルパスインスタンシング” のほうがパフォーマンスが高いため、“シングルパス” は 2020.1 ではサポートされなくなりました。プロジェクトで “シングルパス” レンダリングを使用していた場合は、プロジェクトのシェーダーの更新が必要な場合があります。“シングルパス” 用のカスタムシェーダーを使用するサードパーティのライブラリも更新が必要な場合があります。“シングルパス” から “マルチパス” へのアップグレードを選択するとシェーダーは動作します。ただし、最大のパフォーマンスを得るために “シングルパスインスタンシング” をターゲットにすることをお勧めします。

グラフィックス API の設定方法を教えてください

グラフィックス API は、Player settings (“Edit” > “Project Settings” > “Player”) で設定できます。

ステレオレンダリングモードの設定方法を教えてください

レンダリングモードは、Project Settings の XR Plug-in Management でプロバイダー別に設定できます。

XR Settings API を使用した renderScale でエラーが発生するのはなぜですか

renderScale は除かれ、eyeTextureResolutionScale に置き換えられています。2019.3 以降は、これはスクリプトアップデーターのタスクとなっています。2019.3 より前の Unity バージョンからアップグレードする場合は、手動で renderScale を eyeTextureResolutionScale に置き換える必要があります。

XR Interaction Toolkit でコントローラーからの入力 (例えば、ボタン押下) が認識されないのはなぜですか

デバイスの入力を検出する前に、ヘッドセットを検出する必要があります。テスト時によくある問題として、多くの人がインタラクションのデバッグ中に、ヘッドセットをテーブルの上に置いたままにしてしまうことがあります。ヘッドセットを装着する (または、ヘッドセット内の近接センサーがアクティブになる) までは、コントローラーは認識されません。デバイスから何も入力されない場合は、アプリケーションを起動、または近接センサーをアクティブにしてから、ヘッドセットを装着してください。

iPhone の広角カメラは、AR Foundation アプリケーションで使用できますか

ARKit は、カメラの FOV を変更するオプションを提供していません。

ページ始めに戻る

Unity 2021 LTS へのアップグレード
Unity 2019 LTS へのアップグレード