tanaka's Programming Memo

プログラミングについてのメモ。

Unity2017のプロジェクトを2020LTSにアップグレードする

Unity2017時代のUnityのプロジェクトをまとめて2020LTSにアップした時にやったことのメモです。

方針

いっきに2017から2020へアップすると問題が多くて手が追えなかったので、2017 > 2018LTS > 2019LTS > 2020LTSと段階を経てアップしました。アップする過程で起きたことです。公式のドキュメントのアップグレードガイドを読めばちゃんと対応が載っていると思いますが、1週間ゲームジャムの小さいプロジェクトなので起きた問題だけ対処すればいいやということで進めました。

2017から2018LTSへ

TextMesh ProがAsset StoreからPackage Managerに移行して互換性が無くなった時期です。

  • Unity Hubでバージョンを2018LTSとプラットフォームを設定して開く
  • Assetsフォルダー下のTextMesh Proフォルダーを削除
  • Standard Assetなどを使っているとエラーが出ているかも知れないので不要なものは削除
  • Package ManagerからTextMesh Proをインストール
  • TextMesh ProのEssential Resourcesと、必要に応じてExamples and Extrasをインポート
  • TextMesh Proメニューから Project Files GUID Remapping Tool を起動して、バージョンアップによる不具合を解消

また、PostProcessing StackがV1とV2で揺れていた時期です。V1ならバージョンアップ前にプロジェクトをコピーしておいて、古いプロジェクトを開きながらV2の設定をしました。

2018LTSから2019LTS

Post Processingがエラーになるのでバージョンアップしました。Post Processing Volumeの設定はバージョンアップ後も引き継がれたので、古いPost Processingのフォルダーを削除したあと、Package Managerからインストールし直しました。

また、不要な設定が多数残るようなので、Libraryフォルダーを消して再読み込みした方がよさそうです。

2019LTSから2020LTSへ

WebGLビルド時のエラー

WebGLビルド時に、FinalPathシェーダーでエラーが出る場合があります。これについては以下に書きました。

古いプロジェクトをUnity2020へアップデートした時のWebGLビルドのエラー - tanaka's Programming Memo

Player SettingsのWebGLのOther Settings内にあるAuto Grahpics APIのチェックを外して、Graphics APIを一度削除して再設定して解決しました。何もしなくても2回目のビルドで通ることもあったのでよく分かりません。

その他もろもろ

どこかの段階で出てきたやつです。

ProCore関連

PolyBrushやProBuilder、ProGridといったProCore系のアセットが大量にwarningを吐きます。放置していてもとりあえず動きいますが、直したい場合は Assets/ProCore フォルダーを削除して Package Manager から再インストールします。

PolyBrushでいじったProBuilderのオブジェクトにはz_AdditionalVertexStreamsスクリプトがアタッチされます。うっかりPolyBrushもういらない、と思ってインストールしなかったらwarningが大量発生しました。PolyBrushをインストールするか、missingになったスクリプトをRemoveすれば解決します。

Cinemachine

これもwarningが発生。気になる場合は、Assetsフォルダー内のCinemachineフォルダーを削除して、PackageManagerでインストールします。Player SettingsのOther SettingsにあるScripting Runtime Versionが.NET 4.x Equivalent以上になっていないとエラーがでます。

GUI Layerの削除

GUI Layerが不要になるので、Cameraにアタッチされている場合は削除されます。自動的に削除してくれるので、シーンを開いて変更が起きたら保存すればよさそうです。

Flare Layer

カメラにアタッチされていたFlare Layerが不要とwarningが出るのでRemoveします。

ユニティちゃんトゥーンシェーダー

SuriyunさんのCute Petがユニティちゃんシェーダーを使っていてエラーが出ました。古いシェーダーを削除して、新しいユニティちゃんトゥーンシェーダー(2.0.7を入れました)をインポートして、マテリアルのシェーダーを選択し直して、設定もし直しました。

また何か出てきたら書き足します。