Unity 2020.2 でも、2020 年を通して取り組んでいく、パフォーマンス、安定性、ワークフローの改善に引き続き注力しています。ぜひベータ版をご試用いただき、今後のツールについてのご意見をお聞かせください。
コミュニティからのフィードバックに基づき、2020 年のロードマップでも示した通り、ユーザーにより高い安定性とユーザー体験をお届けするための取り組みを行っています。この取り組みには、Unity 2019 LTS をデフォルトバージョンとしたことも含まれます。また、TECH ストリームでのリリースの回数を年 3 回から 2 回に減らし、安定化のためのフェーズをより長く取ることにしました。
ベータ版の新機能を個別に見ていく前に、将来の計画について少しまとめておきたいと思います。
皆様がぜひ試してみたいと思うような新機能と改善点の概要をまとめました。また、今後公開される新機能の一部について Unity 2020.2 ベータ版についてのウェビナーでご紹介する機会を設けております。Unity 2020.1 ベータ版の公開時に行ったウェビナーと同様に、Unity の R&D チームのメンバーが、皆様のご質問にライブでお答えします。こちらからサインアップしてぜひご参加ください。
ぜひ Betas & Experimental Features フォーラムにあるコミュニティにも参加して、特定の機能領域について議論してみてください。また、新機能やパッケージについていち早く知りたい方は、ベータ版ニュースレターに登録することもご検討ください。
プロジェクトが複雑になるにつれ、新しいコード変更のコンパイルがますます遅くなり、チームのワークフローや生産性に影響を与えるようになります。Unity 2020.2 では、コンパイル時間を最適化するためのいくつかの機能を設計しました。
私たちはコンパイルパイプラインで Roslyn 参照アセンブリを使い、エディターのスクリプトをコンパイルする時、公開されているアセンブリのメタデータが変更されていない場合に、asmdef 参照の不要な再コンパイルが行われることを回避しています。例えば、プライベートなメソッドやフィールドのみを変更した場合、変更されたアセンブリのみが再コンパイルされます。Roslyn アナライザーを使って、C# コードアナライザーをユーザーのイテレーションワークフローを中断することなく、Unity エディター内のバックグラウンドで非同期的に実行、あるいはコマンドラインから同期的に実行することが可能です。Unity プロジェクトで Roslyn アナライザーとルールセットファイルを使用して、スタイル、品質、その他の問題がないかコードを検査することを検討してください。また、Unity 2020.2 では、C# をコンパイルするとき、"-deterministic" コンパイルオプションを使用することができます。ただし、ワイルドカード(*)付きの AssemblyVersion の使用はサポートされていません。この場合、決定論的コンパイルを無効にする方法の詳細が記載されたエラーメッセージが表示されます。
エディターイテレーションプロファイラー(EIP)は、ドメインリロード中にコードのボトルネックを特定するのに役立ちます(再生モードに入る時、スクリプトのコンパイル時など)。これは実験的な機能であり、リサーチ用パッケージとして利用可能です。フォーラムにある手順に従って試してみて、フィードバックをお送りください。
RootNamespace はUnity、Visual Studio、Rider で新しいスクリプトを作成する際に自動的に名前空間を追加するために使用される asmdef インスペクターの新しいフィールドです。
IL2CPP プラットフォームで 0-Change リビルドがサポートされます。たとえば、マテリアル、シェーダー、プリファブなど、コードの変更を伴わない変更を行うと、.NET アセンブリから C++ への IL2CPP 変換はスキップされます。これにより、アーティストのワークフローが改善され、イテレーションが高速化されます。
IL2CPP プレイヤーのビルド時間が短縮されます。.NET アセンブリを C++ ファイルに変換するプロセスは、これまでシングルスレッドで行われていました。Unity 2020.2 では、変換を処理するアプリケーション(il2cpp.exe)が最新のマルチコアプロセッサーを利用しているため、IL2CPP プレイヤーの全体的なビルド時間が大幅に短縮されています。詳細については、フォーラムスレッドを参照してください。
C# 8 がサポートされます。Unity 2020.2 は、デフォルトインターフェースメソッドを除く、すべての C# 8 の新機能と機能強化を利用することができます。
Time.deltaTime の安定性が向上しました。これにより、フレーム時間の計算がより安定したものになり、ゲームのフレームレートが安定して動作しているときのオブジェクトの動きが格段にスムーズになりました。Unity 2020.2 では、iOS、macOS、PS4、Switch、tvOS、UWP、Windows、Xbox One での時間計算周りの安定性が改善されています。Android、Windows/Linux on Vulkan、XR への提供はもうしばらくお待ちください。こちらのフォーラムでのディスカッションも参照してください。
Unity リンカーは静的解析を行い、マネージドコードを削除します。また、多くのアトリビュートを認識し、それが識別できない依存関係にアノテーションを付けることができます。Unity 2020.2 では、このツールに API アップデートが提供され、Mono IL リンカーと同等の機能を持つようになりました。Unity 2020.1 から、いくつかの単純なリフレクションパターンが自動的に検出されるようになり、link.xml ファイルを使用する必要がなくなっています。
Unity Safe Mode が 2020.2 ベータ版から利用可能になりました。これは、スクリプトのコンパイルエラーがあるプロジェクトを開いたときの Unity の動作を改善するものです。エディター起動時にコンパイルエラーが発生した場合、Safe Mode に入るプロンプトが表示されます。Safe Mode は、プロジェクトのアセットの不要な再インポートを待つことなく、エラーを解決して、プロジェクトをいち早く動作する状態に戻すための最良の環境を提供するように設計されています。この機能は、プロジェクトを新しい Unity のバージョンにアップグレードするプロセスを簡素化してスピードアップし、ライブラリフォルダーに誤ったインポートアーティファクトが含まれるケースを減らすことで、大規模なプロジェクトに取り組むチームを支援します。この機能について、フォーラムまでフィードバックをお寄せください。
既存のプロファイラーの統計情報をランタイム API として公開しました。これにより、プレイヤー内のメモリやレンダリングなどの既存のプロファイラー領域のパフォーマンス統計の値を読み取ることができます。また、そのデータを使用して、ターゲットデバイスで実行中のプロジェクトでパフォーマンスのヘッドアップディスプレイ(HUD)を表示したり、ニーズに合わせて他のパフォーマンスツールを構築したりすることができます。
可視化機能の改善も多数盛り込まれました。プロファイラーウィンドウに図を追加する機能は、既存のプロファイラー統計またはユーザーが作成したプロファイラー統計に対する、より詳細なパフォーマンスコンテキストを提供します。また、フローイベントチャートでプロファイラーのタイムラインのシリアルタスクの依存関係を表示し、 アプリケーションのシーケンス内のどのタスクに時間が費やされているかを特定する支援を行えます。
コアパフォーマンスの改善も多数行われました。以下にいくつか例を挙げます。
エディター内での入れ子になったプレハブのロードが最適化され、最大 20 倍高速化にロードが行われるようになりました。
ワークフローの改善は、今年のリリースの大きな柱の 1 つです。私たちのチームは、ユーザーからのフィードバックや要望をモニタリングし、日常的にエディターを使うすべてのチームのために、どのようにユーザー体験を改善できるかを検討してきました。また、プロジェクトやツールのローカライズに役立つ新しいツールの初期バージョンを試すためにテスターを募集しています。
Localization パッケージがテスト用として利用可能になりました。これは、テキストや、オーディオ、テクスチャといったカルチャー固有のアセットに、複数の言語や地域に対応したバリアントのサポートをプロジェクトに追加するためのツールを提供するものです。このプレビュー版パッケージを入手するには、パッケージマネージャーの「Add package from git URL」のフィールドに、「com.unity.localization」と入力して検索してください。また、ドキュメンテーションの手順の説明を参照して、プロジェクトマニフェストを編集してパッケージを追加することもできます。最初に実行するべき内容については、こちらのガイドを参照してください。ご意見等はフォーラムまでお寄せいただければ幸いです。フィードバックをチームと直接共有して、このパッケージをより良いものにするお手伝いをしてくださる方は、ユーザーインタビューへのご登録もご検討ください(※インタビューへのご参加可否は抽選により決定されます)。
エディターパッケージのローカライズ。この機能は新しく実験的機能として追加されるもので、この機能を使って、Unity、パッケージ、カスタムツールのユーザーおよび開発者は、日本語、韓国語、中国語簡体字、中国語繁体字のサポートを追加できるようになります(Language パッケージモジュールのインストールが必要です)。サポートされている言語およびローカライズ対象の機能について、辞書(GNU gettext を使った PO ファイル)を作ることが可能になります。作業の詳細は、フォーラムを参照してください。
PhysX Articulation Body コンポーネントの改善。Rigidbody 階層と ArticulationBody 階層を、反復法ソルバーで解決し、両方の階層に解となる力を自動的に伝播させるようにしたことで、通常のジョイントでリンクすることができるようになりました。これは、ロボティクスや物理学をベースとしたゲームを作るときに特に便利です。さらに、新しい API が公開され、物理ベースのインバースキネマティクス(IK)がサポートされるようになりました。
アセットデータベースの一貫性チェック。Unity 2020.2 では、インポーターによって生成されたアセットが元のアセットと、その依存関係を含めて一致しているかどうかをチェックする機能が提供されています。これは、手動で再インポートを行うか、コマンドラインで有効にすることができます。
Unity Accelerator は、ユーザーが Accelerator に保存されているアイテムへのアクセス制限を一元化できる新しいポリシーテーブルとともに、キャッシュのミラーリング機能を備えたものになりました。この機能については、フォーラムのディスカッションも参考にしてください。
AssetPostprocessor でのプレハブサポート。 OnPostprocessPrefab が実装されている場合に、ポストプロセッサーがプレハブを変更できるようになります。追加されたすべてのオブジェクトには、変更が元のプレハブに適用されることを避けるために、DontSaveInEditor フラグが付与されます。
Prefab のインポートに、正確性、パフォーマンス、スケーラビリティ、キャッシュ可能性などを向上させるいくつかの改善が施されました。スクリプトの依存関係に関して、MonoBehaviour を含むプレハブがスクリプトと同期するようになり、コンパイルエラーが発生しても参照が失われなくなりました。この機能の開発に関することは、フォーラムでご確認ください。
Unity Hub バージョン 2.4.0 では、プロジェクト管理、ダウンロード、Unity エディター、モジュール管理のメッセージやワークフローの明確化など、UX にいくつかの改良が加えられています。また、新しいダイナミックなダウンロード可能なテンプレートが追加され、ゲーム開発をより楽しく学べるようになりました。
パッケージマネージャーのスコープ付きレジストリの導入による UX と管理機能の改善。新しいスコープ付きレジストリがプロジェクトに追加されると、新しいダイアログでユーザーに通知が出されるようになりました。プロジェクト設定からプロジェクト内のスコープ付きレジストリをすべて管理(レジストリとスコープの追加/削除)できるようになりました。「Unity Registry」と「My Registry」パッケージを作成者別にフィルターして、ソースレジストリからパッケージをより簡単に閲覧または検索することができます。
Quick Search 2.0 では、より多くの検索トークンが追加され、クエリを入力する際に役立つコンテクスト補完が提供されています。シーン検索は、開いているシーンに限らず、プロジェクトのすべてのシーンとプレハブを一度に検索できるようになりました。これは、それらのコンテンツをインデックス化することによって実現しています。
Unity 2020.2 にはその他にもエディター全体にわたってユーザー体験の向上を狙った新機能や改善点が盛り込まれています。
Unity 2020.2 では、集約されたワークフローとアーティストツールを使う際の一般的なユーザー体験の向上を通じて、全体的な使いやすさを引き上げるような修正を引き続き注力して行っていきます。また、すべてのノードベースの開発ツールに一貫性を持たせ、レンダリングパイプラインを成熟させることを目標に開発を進めていきます。
シェーダーグラフ 10.0 では、テクニカルアーティストのためのワークフローを改善するいくつかの新機能が含まれています。まず、グラフエディターのパフォーマンスが改善されました。グラフの終点は、モノリシックな Master ノードではなく、機能ブロックのモジュラーな集まり(Master スタック)になりました。これにより、1 つのグラフを Lit や Hair などのシェーダーモデル間で簡単に切り替えられるようになりました。グラフインスペクターは、Master ノードやグラフ上の他のノードからの設定を 1 つの場所に統合し、グラフのアクティブなターゲットとシェーディングモデルも制御します。また、グラフに現在の設定での選択項目に対応している機能とノードが視覚的に表示されるようになりました。Unity 2020.2 では、既存のグラフが Master スタックを使うようにアップグレードされることに注意してください。Shader Graph パッケージのドキュメントのアップグレードガイドも参照してください。
Visual Effects Graph の Unity 2020.2 でのアップデートには数多くの機能と改善点が盛り込まれています。出力イベントの追加により、ユーザーは C# のデリゲートインターフェースを介して、Spawn イベントに基づいてライト、サウンド、物理的な反応、およびゲームプレイを同期させることができるようになりました。実験的機能のうち、スタティックメッシュサンプリングでは、メッシュから直接パーティクルを発生させられるようになりました。また、マルチメッシュ機能を使って、同じ Mesh Output から最大 4 つのメッシュを使用することができ、エフェクトの中で、パーティクルごとの演出のバラエティを簡単に追加することができます。Per Particle LOD を使うと、Mesh Output の画面サイズに応じて LOD メッシュを設定することで、エフェクトを最適化することができます。また、画面外にあるパーティクルのレンダリングを破棄するための最適化として、錐台カリングを追加しました。実験的機能は、(Visual Effects Graph をインストールした上で)Preferences > Visual Effect に移動し、実験的機能を有効にするチェックボックスをオンにすることで利用可能になります。
グローバルイルミネーションの両方のバウンス上限を GPU ライトマッパーと CPU ライトマッパーの両方について引き上げました。加えて、ブルーノイズサンプリングによるライトマップの品質向上もなされています。また、GPU ライトマッパーで大きなライトマップをベイクする際、メモリが少なくなったときにプログレッシブ更新を無効にすることで、メモリ使用量を削減するとともに、ライトマッパーが内部的にメモリ使用量を自動的にスロットルする機能を追加しました。これにより、より大きなプロジェクトのベイクを GPU ライトマッパーで行えるようになりました。
また、Unity 2020.2 では、映画制作やメディア、エンターテインメント業界で働く人たちに向けた、いくつかの改善も行われています。
UI Toolkit がエディターに完全に統合されたコア機能として含まれ、またインストールすると新しい実行時 UI 機能を利用できるプレビュー版が作成されました。これはパッケージマネージャーで「com.unity.ui」を「Add package from git URL」の下に追加することで利用可能です。TextMesh Pro のコアとなるテキスト技術が、フォントをレンダリングする方法として UI Toolkit に統合され、新しい Input System、Sprite、および SpriteAtlas のサポートが追加されています。また、GameView に UXML と USS の「ライブリロード」機能を追加しました。
UI Builder がプレビュー版パッケージとして利用可能になったことを受けて、複数選択のサポートや、Canvas 内で直接テキストを編集できるようにするなど、いくつかのユーザビリティの改善を行いました。また、サブドキュメントをコンテキスト内、あるいは独立してオーサリングすることで、複数の UI ドキュメントの取り回しを改善しています。さらに、「Editor Extension Authoring」を有効にすると、エディター内で使用するコントロールを表示することができます。
スクリプタブルレンダーパイプライン(SRP)に関するユーザーからのフィードバックを取り入れて SRP を進化させ、グラフィックスパッケージの品質を向上させていきます。ロードマップをこちらのページで見ることができます。
ユニバーサルレンダーパイプライン(URP)がバージョン 10 になり、新機能を搭載してビルトインレンダーパイプラインとの機能パリティに近づきました。スクリーンスペースアンビエントオクルージョン(SSAO)を使用すると、シーン内の環境光によるライティングのビジュアルクオリティを向上させることができます。SSAO は、周囲のサーフェスと環境光によるライティングへの露出に基づいて、特定のサーフェスの明るさあるいは暗さの近似を行います。使用していない特定のシェーダを削除することで、ビルドデータのサイズを小さくし、ロード時間を短縮することができます。URP の Lit シェーダーを使って、ディテールマップ、ディテール法線マップ、ハイトマップ、視差マップなどの追加のサーフェス入力ができるようになりました。URP は、新しい Complex Lit シェーダーを通して、クリアコートマップをサポートするようになりました。クリアコートマップは、車のペイントのようなマテリアルをシミュレートしたり、模倣したりするために使用できます。
HD レンダーパイプライン (HDRP)のバージョン 10 に追加された内容の中には、ライティングのデバッグに役立つより良いツールが含まれています。例えば、ライティングデバッグビューモードでは、シーン内のライティングの様々なコンポーネントを分離、可視化、デバッグすることができます。このリリースには、デカールシステムへのさらなる改善も含まれています。これらの改善の 1 つに、新しい Decal レイヤー 機能 があります。これを使用すると、レイヤーごとにどのデカールがどのマテリアルに影響を与えるかを指定することができます。パストレーシングではフォグによる光の吸収とサブサーフェススキャタリングがサポートされ、肌のような有機物を、荒くてプラスチックのような質感ではなく、滑らかで自然な質感で表現できるようになりました。また、HDRP には新しい被写界深度モードが搭載され、高品質のデフォーカスブラーなどを掛けたパストレーシングによる画像が生成できるようになっています。 レイトレーシングにも改善があります。HDRP のレイトレーシングには、透過性のあるゲームオブジェクトのビジュアルが再帰的なレンダリングや屈折の有無に関わらず一貫したものになるように、透過性に関するフォールバックが追加されました。このリリースでは、HDRP は透明なゲームオブジェクト、および光を伝達するゲームオブジェクトについて、色付きのレイトレーシングによるシャドウをサポートしています。さらに、レイトレースされたシャドウのためのノイズ除去機能は、より高品質な結果を生成するようになりました。HDRP のレイトレース反射(RTR)ソリューションは、窓や水のような透明な表面の表現に便利な、透明なマテリアルをサポートするようになりました。HDRP に新たに追加された機能や改善の詳細については、ドキュメンテーションを参照してください。
2D ツールと Unity エディター内での 2D 周りの体験について最近施された改良が、安定性とパフォーマンスの向上を伴う形でこのリリースに盛り込まれています。
整理されたメニュー。オブジェクトやアセット作成のための 2D メニュー項目が、専用のトップレベルメニューに表示されるようになりました。また、いくつかの新機能のメニューも追加されています。この改善されたユーザー体験(UX)は、新しいユーザーにとってはより直感的なものに、2D プロジェクトですでに作業しているユーザーにとってはより高速化したものに映るはずです。
2D デフォルトアセットの改善。 以前は、新しい 2D ゲームオブジェクトは小さなピクセルのスプライトで表現されており、ユーザーはゲームオブジェクトを使用できるようにするために変更を加える必要がありました。今回、各々の形状に合わせた Collider 2D や事前に定義された 2D Physics、Tilemap や Sprite Shape などのオプションを持つ、さまざまなプリミティブシェイプの 2D ゲームオブジェクトをピックアップしてそのまま使うことができるようになりました。これによって、ゲームプレイのプロトタイピングや全体的なユーザビリティが向上しています。この機能について、フォーラムでご意見をお聞かせください。
Tilemap Extras プレビュー版パッケージ。2D Extras GitHub リポジトリのツールの一部が、パッケージマネージャーから利用できるようになりました。これにより、私たちが新しい変更点をパッケージに統合している間でも、簡単にツールにアクセスできるようになります。このパッケージに含まれる機能には、Animated タイル、すべての Tilemap タイプに対する Rule タイル、および様々なブラシが含まれます。詳しくは Tilemap Extras のドキュメンテーションを参照してください。長年にわたりリポジトリに貢献してくださっている皆様に感謝します。また、Tilemap Extras フォーラムもご覧になり、皆様のご意見を共有してください。
2D Animation 5.0 と 2D IK。新バージョンの 2D Animation パッケージにおいて、2D IK はスタンドアロンのパッケージではなくなりました。改良点としては、非表示にできるギズモと IK ハンドルのより視覚化の改善があります。2D IK を使って、親ボーンをリアルに追従するボーンのチェーンの位置と回転を自動的に計算することができます。これは、アニメーターが 2D スケルタルアニメーションを採用する場合に時間を節約することを可能にします。
拡張現実やバーチャルリアリティ、モバイル、ウェブ、デスクトップ、およびコンソールなど、皆様がこれから体験を届けようとしているプラットフォームが何であっても、開発プロセスを最適化できるように、主要なプラットフォームパートナーと緊密に連携しています。
Apple Silicon のネイティブサポート。Unity 2020.2 では、スタンドアロンプレイヤー向けに Apple Silicon をネイティブでサポートしています。これによって、皆様は次世代の Mac ハードウェアをターゲットにすることができます。フォーラムをチェックし、詳細な情報やディスカッションの内容をご覧ください。
Adaptive Performance 2.0 では、新しいサンプルプロジェクトが追加され、可変リフレッシュレート、スケーラー、およびあらゆるデバイスで Adaptive Performance をエミュレートする Adaptive Performance Simulator 拡張機能など、さまざまな新機能を紹介しています。詳しくは、フォーラムをご覧ください。
Input System 1.1 では、多くの修正といくつかの改善が行われました。リバインドを JSON として保存し、読み込むことができるようになりました(RebindSaveLoad.cs サンプルスクリプトを参照してください)。また、デバイスレイアウトを事前にコンパイルできるようになり、これらのデバイスのインスタンス化時間とガベージコレクション(GC)ヒープコストが大幅に削減されました。Input System フォーラムまで、フィードバックをお寄せください。
Unity Distribution Portal(UDP)を使うと、単一のハブを介して複数のアプリストアにゲームを配信することができます。Unity 2020.2 では、UDP パッケージは UnityIAP とは独立して動作します。つまり、UnityIAP がプロジェクトに実装されているかどうかに関わらず、UDP パッケージをプロジェクトに追加することができ、実装されている場合も、競合のリスクを冒すことなく追加することができるということです。UDP は、Services ウィンドウから有効にできます。
Unity が提供するアプリ内課金(IAP)ゲームシステム、Game Foundation にもアップデートがあり、ゲームにインベントリ、通貨、購買、ゲーム内ストア機能を素早く追加するオプションが提供されます。これらの機能は柔軟性のある共通システムであり、すぐに使えてカスタマイズ可能なプレハブの形で提供されます。
---
---
ベータ版をお試しになる前に、プロジェクトをバックアップすることをお勧めします。このアドバイスは、ベータ版とプレビュー版のパッケージを使用する場合には常に役立つものです。ベータ版は本番の制作で使用することを想定して作られてはおらず、あくまで新機能を評価していただくためのバージョンとしてご提供しています。このバージョンをお試しになって、ぜひ私たちにフィードバックをお送りください。すでに本番の制作に入っているプロジェクトについては、検証済みのパッケージと最新バージョンの Unity 2019 LTSをご利用になることをおすすめします。
ハッピーテスティング!皆様からのフィードバックはいずれも丁寧にレビューさせていただきます。
Is this article helpful for you?
Thank you for your feedback!