Version: 2023.1
言語: 日本語
Upgrade to Unity 2023.1
Unity 2022.2 へのアップグレード

Upgrade to Unity 2022 LTS

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

ノート: 2022 LTS は 2022.3.0 とも呼ばれます。

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

Articulation Drive の forceLimit プロパティがインパルスではなく力の入力を受け付ける形に変更

Articulation Drive の forceLimit 機能は、以前は力の制限ではなくインパルス (衝撃、刺激) の制限として使用されていました。このため、力の制限が fixedDeltaTime の値に依存していました。

既にこの値をインパルスとして使用する形で導入している場合は、アップグレードすると、Articulation Body コンポーネントの Articulation Drive の forceLimit の値が著しく不正確になります。

古いプロジェクトを開く時のためのチェックがあります。プロジェクトをアップグレードすると、Unity は、間違った設定を回避するために、自動的に関連の値を ProjectSettings > Time ページに設定された Time.fixedDeltaTime で割ります。これは、プロジェクトに設定された Time 値に基づいてロボットのシミュレーションが行われるほとんどのケースをキャッチします。

ロボットのシミュレーションにスクリプトのカスタムの時間値を使用している場合は、これらの値を手動で修正する必要があります。

生成されるライトマップ UV の変更

Unity の UV 生成手順が変更されました。モデルの Import Settings (インポート設定) で Generate Lightmap UVs オプションを使用しているプロジェクトでは、ライトマップが破損して見える場合があります。この問題を解決するには、プロジェクト内の全てのライトマップを再ベイクしてください。

この変更は、Generate Lightmap UVs を使用するプロジェクトにのみ影響します。

UI Toolkit の GradientField の変更

Unity 2022.1 から、GradientField のカラーピッカーの HDR の設定が、デフォルトで有効ではなくなりました。GradientField を使用する既存のプロジェクトでは、HDR カラーピッカーの代わりに通常のカラーピッカーが使用されるようになりました。

HDR カラーピッカーの使用を継続したい場合は、GradientField の HDR プロパティを使用して有効にできます。

UI Toolkit の Numeric および Compound フィールドがランタイムで使用可能に

以下のフィールドが使用可能になりました。これらはランタイムで自動的に機能します。

  • DoubleField
  • FloatField
  • IntegerField
  • LongField
  • Hash128Field
  • RectField
  • RectIntField
  • Vector2Field
  • Vector3Field
  • Vector4Field
  • Vector2IntField
  • Vector3IntField
  • BoundsField
  • BoundsIntField

アップグレードを行っても、プロジェクト内の UXML ファイルは更新されず、引き続き動作します。ただし、新しい昇格された型を UI Builder を通して追加すると、UXML アセットの古い Unity バージョンとの後方互換性が破られます。UXML アセットの後方互換性を維持するには、UXML ファイル内で古い型 (UnityEditor.UIElements 名前空間) を使用する必要があります。

Input Manager の Physical Keys オプションがデフォルトで有効に

Physical Keys オプションを使用すると、(ユーザーの地域によって異なる場合がある言語別のレイアウトではなく) 物理的なキーボードレイアウトにキーコードをマッピングできます。例えば、1 行目の文字が “QWERTY”と並ぶキーボードもあれば、“AZERTY” と並ぶものもあります。つまり、一般的に知られる “WASD” キーを使用して移動を行う形でコントロールのスクリプトを記述した場合、AZERTY 配列のキーボードでは、(矢印キーの配列のように) 物理的に正しい割り当てになりません。Physical Keys オプションを有効にすると、Unity は、ユーザーの使用している実際のレイアウトに関係なく、キーの物理的な位置を表す一般的な ANSI/ISO の “QWERTY” レイアウトを使用します。つまり、“Q” キーを指定した場合、ユーザーのキーボードでその位置に別の文字が割り当てられていたとしても、必ず文字キーの最初の行の一番左の文字になります。

2022.1 現在、このオプションはデフォルトで有効になっており、将来的には古い動作を廃止し削除する予定です。

BatchRendererGroup のサポート追加

BatchRendererGroup APIは元々 MegaCity デモのために記述されたものですが、完全にはドキュメント化されておらず、実装の詳細の多くが提供されていないために使用が困難でした。この API が一から記述し直され、完全にドキュメント化され、サポートされました。

新しいインターフェースの使用方法については、BatchRendererGroup のページを参照してください。

レンダーパイプライン

このアップグレードガイドでは、Unity のビルトインレンダーパイプラインのバージョン 2022.2 へのアップグレード方法を説明します。

他のレンダーパイプラインをバージョン 2022.2 にアップグレードする場合は、使用しているレンダーパイプラインのドキュメントを参照してください。

他のパッケージをアップグレードする場合は、使用しているパッケージのドキュメントを参照してください。

Enlighten のベイクしたグローバルイルミネーションのライトマッピングバックエンドが、デフォルトで使用可能ではなくなりました。プロジェクトをこのバージョンにアップグレードすると、ライトマッパー選択ドロップダウンから Enlighten ベイキングバックエンドが削除され、Enlighten ベイキングバックエンドを選択した全てのシーンで、代用として Progressive Lightmapper が使用されます。

Apple シリコンデバイスでは、Unity は Enlighten ベイキングバックエンドをプログレッシブ GPU ライトマッパーに置き換えます。その他のデバイスでは、Unity は CPU プログレッシブライトマッパーを選択します。

Enlighten のベイキングバックエンドを引き続き使用するには、Edit > Project Settings > Editor を開き、メニューの Graphics セクションで Enlighten for Baked GI (Legacy) を有効にします。ただし、このオプションは 2023.1 以降では使用できません。

Lighting ウィンドウで Minimum Bounces が使用不可に

Lighting ウィンドウで プログレッシブライトマッパー の Minimum Bounces プロパティが使用できなくなりました。

プロジェクトを 2022.2 にアップグレードすると、Unity は、Minimum Bounces の値を、ライトマッピングの推奨最小バウンス数である 2 にリセットします。この値を変更するには、LightingSettings API プロパティ minBounces を編集します。

Unity デフォルトの Gradle テンプレートの変更

Unity は、バージョン 2022.2 で、Android によって使用される全てのツールのデフォルトバージョンを更新しました。新しいバージョンは以下の通りです。

ツール バージョン
SDK
Cmdline-tools コンポーネント バージョン 6.0
Build-tools コンポーネントバージョン 32.0.0
Platform-tools コンポーネント 32.0.0
プラットフォーム (API レベル) 31 と 32 をデフォルトで追加
Tools コンポーネント 削除
NDK r23b
JDK (OpenJDK) 11.0.14.1+1
Gradle 7.2
Android Gradle プラグイン 7.1.2

Gradle バージョン 7.2 への更新で、一部の build.gradle ファイルの設定オプションが変更されました。このため、Unity デフォルトの Gradle テンプレート に大幅な変更を加える必要がありました。Unity はカスタム Gradle テンプレートを新しい形式に合わせてアップグレードしないため、カスタムテンプレートファイルを含むプロジェクトはビルドに失敗する可能性があります。これを解決するには、カスタムテンプレートファイルを、新しいデフォルトテンプレートファイルに基づいて再作成してください。

build.gradle 設定オプションの変更については、Android Gradle プラグインのリリースノート を参照してください。

Navigation と Pathfinding が Unity コアから AI Navigation パッケージに移行

パッケージのドキュメントはこちらです。: https://docs.unity3d.com/Packages/com.unity.ai.navigation@latest

古いバージョンの Unity エンジンで Navigation 機能を使用して作成したプロジェクトがある場合は、以下の選択肢があります。

  • プロジェクトをそのまま使い続ける
  • 新しいパッケージを使用する形にプロジェクトを変換する

いずれの場合も、AI Navigation パッケージは、自動でインストールされてプロジェクトに追加されます。

新しいパッケージの使用を開始するには、以下の手順でプロジェクトを変換する必要があります。

  1. Window > AI > NavMesh Updater を選択します。
  2. NavMesh Updater ウィンドウで、変換するデータのタイプを選択します。
  3. Initialize Converters をクリックすると、選択したデータのタイプが検出され表示されます。
  4. 変換するデータを選択します。
  5. Convert Assets をクリックして変換を完了してください。

変換処理の一環として、NavMesh Updater は以下の変更を行います。

  • 以前はベイクされてシーンに埋め込まれていたナビメッシュは全て、Navigation という新しいゲームオブジェクトに作成された NavMeshSurface コンポーネントから参照されるようになりました。
  • Navigation Static とマークされていたオブジェクトは全て、適切な設定を持つ NavMeshModifier コンポーネントを持つようになりました。

異なるシーン内のナビメッシュが異なるエージェント設定でベイクされる場合、それらの設定に合わせて新しいエージェントタイプを作成する必要があります。エージェントタイプの作成は、以下の手順で行えます。

  1. Window > AI > Navigation を開きます。
  2. Agents を選択します。
  3. 新しいエントリーを作成し、関連の設定を指定します。

新しいエントリーを作成したら、以下を行う必要があります。

  • 新しく作成されたエージェントタイプを、そのシーン用に作成された Navigation 内の対応する NavMeshSurfaces にそれぞれ割り当てます。
  • そのナビメッシュを使用する想定の NavMeshAgents にエージェントタイプを割り当てます。

既存の各ナビメッシュに使用されていた設定を確認するには、Project ウィンドウで NavMesh .asset ファイルを選択します。ナビメッシュの設定が Inspector に表示されます。

プロジェクトが、Unity の NavMeshComponents GitHub リポジトリ からダウンロードされたスクリプトによって定義された NavMeshSurfaceNavMeshModifierNavMeshModifierVolume、またはNavMeshLink コンポーネントを使用している場合は、AI Navigation パッケージをプロジェクトに追加する前に、これらのスクリプトと関連ファイルを削除してください。これらのスクリプトを削除しないと、コンソールでこれらのコンポーネントに関連した競合やエラーが発生する可能性があります。新しいコンポーネントは、以下のコンポーネントを使用している場合を除き、プロジェクト内で古いコンポーネントと同じ動作を反映します。

  • NavMeshSurface コンポーネントに、NavMeshModifier を持つオブジェクトのみを使用してベイク処理を行うオプションが追加されました。
  • 階層内の子オブジェクトに NavMeshModifier コンポーネントを適用するかどうかが指定可能になりました。
Upgrade to Unity 2023.1
Unity 2022.2 へのアップグレード