2020年版 Unity Package Manager の Release Notes 全部抜く

公開:2020/12/08
更新:2020/12/08
11 min読了の目安(約10400字TECH技術記事

はじめに

この記事は Unity Advent Calendar 2020 の9日目の記事になります。
前日は Takaaki_Ichijo さんの「Unityで「積み上げ式棒グラフのリザルト画面」を作る&いい感じに音をつける」でした。
RPG で経験値が溜まる様子とかを音付きで表現する時とかにも使えるテクニックですね!

さて、本記事では「2020年に Unity の TECH ストリームリリースで入った(入る) Unity Package Manager に関連する対応」をまとめてみます。

2020年の TECH ストリームとしては、2019.3, 2020.1, 2020.2 (予定) となっているので、これらのバージョンで入った Package Manager 関連の修正を余すこと無くお届けいたします。

っていうかぶっちゃけ、Release Notes を翻訳しただけです。

量が尋常じゃないので、本記事ではサマリを一覧するのみに留め、各詳細は別記事に纏めてリンクしております。
詳細記事では Release Notes の原文や私なりの補足説明が確認できます。
サマリの中に気になるモノがあれば、詳細記事をご覧いただくと良いかもしれません。

対象読者

本記事は次に挙げる方を対象読者として想定しています。

  • Unity Package Manager の最新情報を知りたい方
  • 今利用している Unity バージョンで使える Unity Package Manager の機能を知りたい方
  • Unity Package Manager ヲタクな方

書かれていること

本記事では次に挙げる事柄について記載しております。

  • Unity の TECH ストリームに於ける Release Notes のうち、Unity Package Manager に関するものを抜粋したまとめ
  • 各種機能追加・改善のバージョン別反映状況

書かれていないこと

本記事では次に挙げる事柄については記載しません。

  • Unity Package Manager の基本的な使い方
  • Package の作り方
  • Scoped Registry の建て方

それぞれ、過去に書いた記事にリンクしていますので、興味ある方はご覧ください。

略記について

地味に登場する単語が長かったりするので、以降は次のように略記します。

  • Unity Package Manager: UPM
  • Package Manager Window: Window
  • Package Manager UI: UI

2019.3

Features

詳細はこちら

  • Asset Store 統合
  • 診断機能
  • tarball サポート
  • Git URL サポート

Changes

詳細はこちら

  • PackageInfo に Git 関連情報追加
  • 競合解決の情報を upm.log に記録
  • Package Manager UI に要素を追加するためのメニュー拡張を追加
  • SCP を用いた Git URL をサポート
  • メジャーバージョンが等しい場合は競合エラーにならないようにする
  • UPM Package としての Package Manager UI の配布を廃止
  • Asset Store の My Assets は異なるページに分離してグルーピング
  • エディタの LastLayout サイズを削減
  • エディタ再生中に Asset Store からダウンロードしようとすると警告を表示

API Changes

詳細はこちら

  • UnityEditor.PackageManager.UI API 追加
  • PackageInfo 型のプロパティリネーム

Fixes

詳細はこちら

  • Package 名に関するバリデーションの回帰を修正
  • API ドキュメントの誤記を修正
  • macOS と Linux で Git LFS 関連のエラーが起きていたものを修正
  • file: を用いた Local Package が自動解決されなくなっていた問題を修正
  • tarball 展開時に中断されるとキャッシュが壊れる問題を修正
  • Package Manager API を同時に叩くとオカシクなることがある問題を修正
  • Package Manager 経由で Package を削除すると、パッケージが見つからないよエラーが表示される問題を修正
  • Git リビジョンを指定すると Submodule が同期されなくなる問題を修正
  • Scoped Registry として npm registry を指定するとエラーが出ることがある問題を修正
  • キャッシュコピー時に中断された際の問題を修正
  • Package Manager UI 内の大文字表記を修正
  • .unitypackage をインポートする際に複数のエディタを開いていると、インポート先がオカシクなる問題を修正
  • "-/all" をサポートしていない Scoped Registry に対する検索 API の問題を修正
  • 長いパッケージ名も表示されるように修正
  • Ctrl + F (command + F) で検索窓にフォーカスするように修正

2020.1

Features

詳細はこちら

  • Project Settings 内に UPM の詳細設定を追加
  • Preview Packages In Use メニューを追加
  • Enable Preview Packages の状態をプロジェクト設定として保持
  • Git パッケージの指定に於いて、サブディレクトリを指定可能に
  • Asset Store にホストされている UPM パッケージ形式のアセットをサポート
  • 環境変数から UPM 設定ファイルのパスを指定可能に
  • Reset Packages メニューの場所を Advanced menu の最下部に移動
  • 被依存のパッケージ情報も表示
  • Asset Store のパッケージをメタデータでソート・フィルタ可能に
  • Window の使い心地を他のエディタウィンドウに近づける
  • プレビューパッケージの利用を強調

Changes

詳細はこちら

  • Cinemachine が Verified に
  • パッケージ一覧の各アイテム行を1行にする
  • Unity Registry とオレオレ Registry とを分離
  • Cinemachine を v2.6.0 にアプデ
  • 直接参照している依存が競合した場合はエラーを出す

API Changes

詳細はこちら

  • 強制的にパッケージを再同期するメソッドを追加
  • ロックファイルの利用がデフォルト有効に
  • 非推奨だった外部プロジェクト依存キーワードのサポートを削除

Improvements

詳細はこちら

  • 診断機能にヘルスチェック機能を追加
  • スピナーにツールチップ追加
  • 新しいアイコンとツールチップを追加
  • 些細なコンフリクトであれば自動解決する
  • Registry へのメタデータ問い合わせのパフォーマンスを改善
  • UPM の状態をキャッシュすることでプロジェクト読み込み時間を改善
  • My Assets のパッケージを選択中は All Packages への切り替えを無効にする
  • AdaptivePerformance をアプデ

Fixes

詳細はこちら

  • Package Manager Window にアイコン追加
  • カスタムパッケージの package.json 内にてドキュメントの URL を指定可能になった
  • Package Manager Window のクリッピングに関する問題をバックポート
  • ダウンロード進捗バーを Window のサイズに併せる
  • Package Manager Window での件数表記を可視アセットの件数にする
  • 読み取り専用パッケージの package.json を編集不可にする
  • オフラインモードの時はパッケージ一覧を更新不可にする
  • パッケージを固める際に .npmignore が無いと .gitignore の内容を読まなくなっていた問題を修正
  • パッケージを固める際に権限エラーが出ることがあった問題を修正
  • Package Manager Window 内の Dependencies 一覧にインストール済のパッケージしか表示されなくなっていた問題を修正
  • Package Manager Window 内の Load More をクリックするとパッケージ一覧が選択中パッケージの位置までスクロールしてしまう問題を修正
  • Local Disk から読み込んでいるパッケージを削除するとエラーが表示される問題を修正
  • Registry URL に不要なスラッシュが入っていると認証が無視される問題を修正
  • オフライン時に Load More をクリックすると二度と表示されなくなる問題を修正
  • Package Manager Window 内で依存パッケージの文字列が編集可能になっていた問題を修正
  • Package Manager Window にフォーカスすると選択状態が上書きされる問題を修正
  • 未反映の変更があると Package Manager Window が真っ黒になる問題を修正
  • UPM の起動に割り当てられた10秒よりも多く掛かることがある問題を修正
  • Registry に接続できないときに UnityEditor.PackageManager.Client.GetAllPackageInfo() がエラーを吐かずに空のリストを返す問題を修正
  • Registry から Unauthorized エラーが返された場合でも一般的なエラーとして取り扱っていた問題を修正
  • Proxy 設定の誤りにより UPM のプロセスに接続できなくなっていた問題を修正
  • Package Manager Window 内のテキストが選択出来ない問題を修正
  • エディタ起動時に現在有効なビルトインパッケージに対してスクリプトをビルドするように修正
  • 変更適用後の Edit ボタンを修正
  • 初めて My Assets を開く時に 'not logged in' エラーが表示される問題を修正
  • リクエスト失敗時のラベルが「ホスト未定義」となっていた問題を修正
  • とても長い検索文字列が与えられた際の UX の問題を修正
  • Preview Packages ボタンのドロップダウンがぼやけていたのを修正
  • Package Manager Window でバージョン拡張器が壊れていた問題を修正
  • 依存ステータスタグの位置ズレ問題を修正
  • package.json が更新されても UI が更新されない問題を修正
  • ダウンロードできないパッケージのダウンロードプログレスバーが非表示になっていた問題を修正
  • 説明文のスクロールを修正
  • 互換性のあるパッケージが検索で見付からなかった時のエラーメッセージを改善
  • Package Manager Window のテキストをローカライズ
  • My Assets のダウンロード起因のエラーメッセージを分かりやすくする
  • 直接の依存に加えて、再帰的な依存パッケージも表示する
  • My Assets のデザインを微調整
  • npm の認証情報の保管場所をシステムグローバルからユーザ設定に移動し、ファイルフォーマットを TOML に変更
  • Window に再フォーカスした際にスクロールバーの位置がリセットされないようにする
  • バージョン文字列が空でもインストールを停止しないようにする
  • Asset Store パッケージ向けにパッケージ詳細画面を再デザイン
  • package.json から依存を削除
  • Git パッケージの保存先パスを短くする
  • 初期取得中は部分的なリストを非表示にする
  • ダウンロード進捗の文字色を Light テーマでも見やすくする

2020.2

本記事の執筆時点で 2020.2 は Beta 版となっているため、2020.2.0b1 〜 2020.2.0b14 の Release Notes から UPM 関連の情報を掻き集めました。

モノに依っては 2020.2.0f1 がリリースされる際にオミットされる可能性もありますのでご留意ください。(殆ど無いとは思うけど。)

Features

詳細はこちら

  • Scoped Registries を Editor 上で設定するための UI を追加
  • Project Settings 内に UPM の詳細設定を追加
  • Asset Store は移動しました画面内に、「次からは直接ブラウザで開く」チェックが追加
  • 状態エラーと操作エラーとを区別する
  • Asset Store の My Asset をダウンロードする際に、一時停止・再開ボタンを追加
  • パッケージの説明文内の URL を検出して HyperLink に変換する
  • Preview Packages in Use ドロップダウンメニュー追加
  • ChangeLog と License の URL が指定可能に
  • 環境変数から UPM 設定ファイルのパスを指定可能に
  • UI からのエラーは UPM 起因であるコトを明示
  • プレビューパッケージの利用を強調
  • パッケージ詳細のインタフェースを変更し、Full Version を表示したりタグを表示したりする
  • ローカルパッケージのパスを表示
  • Window の更新ボタンから更新する種類を選択出来るように
  • Enable Preview Packages の設定を Project Settings の Package Manager 設定ページに移動
  • パッケージ名を名称と組織名に分割

Changes

詳細はこちら

  • UPM の Log Level を設定可能に
  • UPM の Log Level を設定するための API を追加
  • システムワイドの UPM 設定ファイルのパスとフォーマットを変更
  • パッケージ一覧の各アイテム行を1行にする
  • Manifest のパースエラーなどの重大な問題が起きても、元々のパッケージ状態を破壊しないようにする
  • Unity Registry とオレオレ Registry とを分離
  • com.unity.purchasing のバージョンを v2.1.0 に更新
  • 埋め込みパッケージファイルを自動的にバージョン管理下に置く機能を更新
  • 直接参照している依存が競合した場合はエラーを出す
  • オススメするバージョンのロジックを変更
  • Cinemachine を v2.6.0 に更新

API Changes

詳細はこちら

  • パッケージのインポートとコンパイルが完了すると呼ばれる UnityEditor.PackageManager.Events.registeredPackages という event を追加
  • 新しいパッケージをインポートしようとする前に呼ばれる UnityEditor.PackageManager.Events.registeringPackages という event を追加
  • 強制的にパッケージを再同期するメソッドを追加
  • ロックファイルの利用がデフォルト有効に

Improvements

詳細はこちら

  • PackageManager.Client.SearchAll() に Enterprise パッケージを返すサポートを追加
  • バグレポに Packages/packages-lock.json を追加
  • パッケージのアクションボタンにツールチップを追加
  • インポート・ダウンロードボタンの可視性を改善
  • Unity IAP との相互運用性を向上
  • Registry へのメタデータ問い合わせのパフォーマンスを改善
  • Git URL からインストールした際の見た目を改善
  • UPM プログラムがない場合のエラーメッセージを明瞭にする
  • 些細なコンフリクトであれば自動解決する
  • UPM の状態をキャッシュすることでプロジェクト読み込み時間を改善
  • Cinemachine を v2.6.1 に更新

Fixes

詳細はこちら

  • Light モードに於ける Preview と Verified のタグ色を法的なコントラスト要件に準拠
  • 関数のシグネチャとコメントを変更
  • UIElements の VisualSplitter を利用
  • AssetDatabase のプロクシを作り、テスト環境で AssetDatabase の状態に依存しないようにする
  • package.json が更新されても Samples が更新されない問題を修正
  • Sample をリストする際に null エラーが出ることがある問題を修正
  • パッケージを固める際に .npmignore が無いと .gitignore の内容を読まなくなっていた問題を修正
  • パッケージを固める際に権限エラーが出ることがあった問題を修正
  • 削除したカスタムパッケージがプロジェクトウィンドウに表示されっぱなしな問題を修正
  • リクエスト失敗時のラベルが「ホスト未定義」となっていた問題を修正
  • Asset Store パッケージのダウンロード進捗の UX に一貫性が無かった問題を修正
  • Asset Store でダウンロードできないハズのアセットがダウンロード・インポートできていた問題を修正
  • Registry URL に不要なスラッシュが入っていると認証が無視される問題を修正
  • Scoped Registries 内のプレビューパッケージがフィルタされてしまう問題を修正
  • Samples の挙動が色々おかしかった問題を修正
  • Linux で起動失敗ウィンドウの診断が診断ダイアログを表示しない問題を修正
  • 同じ Git パッケージを二度追加できなかった問題を修正
  • UPM の起動に割り当てられた10秒よりも多く掛かることがある問題を修正
  • Registry に接続できないときに UnityEditor.PackageManager.Client.GetAllPackageInfo() がエラーを吐かずに空のリストを返す問題を修正
  • グループ名ラベルのツールチップが表示されない問題を修正
  • パッケージ名に改行とかが入っている場合に PackageManager.Client.Remove が処理し続ける問題を修正
  • 手動更新した後の検索クエリの問題を修正
  • Scoped Registries 設定に於ける null エラーを修正
  • 4K ディスプレイを使っているとトグルボタンの重ね合わせがおかしくなる問題を修正
  • 低速回線時に於ける Asset Store パッケージの表示に関する問題を修正
  • 静的コード解析によりレポートされた AssetStorePackage の不具合を修正
  • 静的コード解析によりレポートされた AssetStoreProductInfo の不具合を修正
  • My Assets を開く時に 'user not logged in' エラーが表示されることがある問題を修正
  • Scoped Registries 設定にエラーがあると UI が空のリストを表示する問題を修正
  • エラーメッセージが長すぎるとダイアログボックスが空になる問題を修正
  • Package データベースに於ける潜在的な null エラーを修正
  • パッケージ開発者の説明文のスクロールを修正
  • Preview Packages ボタンのドロップダウンがぼやけていたのを修正
  • Charles Proxy 実行中に Window で Asset Store ページを開くと ArgumentException が throw されていた問題を修正
  • package.json が更新されても UI が更新されない問題を修正
  • パッケージ読み込みバーに於けるパッケージテキストと Load Next の重なりを修正
  • Markdown に関連付けされたアプリケーションがない場合にオフラインドキュメントが開けない問題を修正
  • PackageInfo.FindForAssetPath() のパフォーマンスオーバーヘッドを修正
  • インスペクタでパッケージをグレーアウト
  • DownloadImageAsync メソッドを AssetStoreCache クラスに移動
  • ダウンロード進捗バーを Window のサイズに併せる
  • npm の認証情報の保管場所をシステムグローバルからユーザ設定に移動し、ファイルフォーマットを TOML に変更
  • 開発中のカスタムパッケージを削除しても UI が更新されない問題を修正
  • 要素が存在する場合に actif 削除ボタンを設定

おわりに

ということで、2020年に施された Unity Package Manager に関する機能追加や修正・変更などを纏めてみました。
軽い気持ちで「一覧纏めてみるかー」とか思って始めた本稿ですが、思っていたよりも件数が多く、なかなかにヘヴィな執筆活動となりましたw

もし、翻訳についての間違いや解釈違いなどがありましたら、コメント欄や @monry にてご連絡いただけると嬉しいです。

あと、♡押してもらえるととても嬉しいです!

明日の Unity Advent Calendar 2020yuji_ap さんの「ピクセルパーフェクトについて書きます」です!
2D ゲームなどで重要になってくる技術なので、気になりますね〜👀

宣伝

最近「Unity 完全に理解した Channel」という YouTube Channel を開設しました!

「ちょっとずつゲームを作っていく様子」や「アセット使ってみた」や「Release Notes ピックアップ」など色々なコンテンツを配信しようと思っているので、是非ともチャンネル登録よろしくお願いいたします!🙏